#include "EnumMapping.h"

using namespace BroodWar;
using namespace BroodWar::Api;
using namespace BroodWar::Api::Enum;

namespace BroodWar
{
	static EnumMapping::EnumMapping()
	{
		//NOTE code below is generated automatically
		#pragma region RaceType
		RaceType = gcnew EnumClassMap<BWAPI::Race, BroodWar::Api::Enum::RaceType>(7);
		RaceType->Add(&BWAPI::Races::Zerg,    BroodWar::Api::Enum::RaceType::Zerg);
		RaceType->Add(&BWAPI::Races::Terran,  BroodWar::Api::Enum::RaceType::Terran);
		RaceType->Add(&BWAPI::Races::Protoss, BroodWar::Api::Enum::RaceType::Protoss);
		RaceType->Add(&BWAPI::Races::Random,  BroodWar::Api::Enum::RaceType::Random);
		RaceType->Add(&BWAPI::Races::Other,   BroodWar::Api::Enum::RaceType::Other);
		RaceType->Add(&BWAPI::Races::None,    BroodWar::Api::Enum::RaceType::None);
		RaceType->Add(&BWAPI::Races::Unknown, BroodWar::Api::Enum::RaceType::Unknown);
		#pragma endregion

		#pragma region WeaponType
		WeaponType = gcnew EnumClassMap<BWAPI::WeaponType, BroodWar::Api::Enum::WeaponType>(102);
		WeaponType->Add(&BWAPI::WeaponTypes::Gauss_Rifle,                        BroodWar::Api::Enum::WeaponType::Gauss_Rifle);
		WeaponType->Add(&BWAPI::WeaponTypes::Gauss_Rifle_Jim_Raynor,             BroodWar::Api::Enum::WeaponType::Gauss_Rifle_Jim_Raynor);
		WeaponType->Add(&BWAPI::WeaponTypes::C_10_Canister_Rifle,                BroodWar::Api::Enum::WeaponType::C_10_Canister_Rifle);
		WeaponType->Add(&BWAPI::WeaponTypes::C_10_Canister_Rifle_Sarah_Kerrigan, BroodWar::Api::Enum::WeaponType::C_10_Canister_Rifle_Sarah_Kerrigan);
		WeaponType->Add(&BWAPI::WeaponTypes::C_10_Canister_Rifle_Samir_Duran,    BroodWar::Api::Enum::WeaponType::C_10_Canister_Rifle_Samir_Duran);
		WeaponType->Add(&BWAPI::WeaponTypes::C_10_Canister_Rifle_Infested_Duran, BroodWar::Api::Enum::WeaponType::C_10_Canister_Rifle_Infested_Duran);
		WeaponType->Add(&BWAPI::WeaponTypes::C_10_Canister_Rifle_Alexei_Stukov,  BroodWar::Api::Enum::WeaponType::C_10_Canister_Rifle_Alexei_Stukov);
		WeaponType->Add(&BWAPI::WeaponTypes::Fragmentation_Grenade,              BroodWar::Api::Enum::WeaponType::Fragmentation_Grenade);
		WeaponType->Add(&BWAPI::WeaponTypes::Fragmentation_Grenade_Jim_Raynor,   BroodWar::Api::Enum::WeaponType::Fragmentation_Grenade_Jim_Raynor);
		WeaponType->Add(&BWAPI::WeaponTypes::Spider_Mines,                       BroodWar::Api::Enum::WeaponType::Spider_Mines);
		WeaponType->Add(&BWAPI::WeaponTypes::Twin_Autocannons,                   BroodWar::Api::Enum::WeaponType::Twin_Autocannons);
		WeaponType->Add(&BWAPI::WeaponTypes::Twin_Autocannons_Alan_Schezar,      BroodWar::Api::Enum::WeaponType::Twin_Autocannons_Alan_Schezar);
		WeaponType->Add(&BWAPI::WeaponTypes::Hellfire_Missile_Pack,              BroodWar::Api::Enum::WeaponType::Hellfire_Missile_Pack);
		WeaponType->Add(&BWAPI::WeaponTypes::Hellfire_Missile_Pack_Alan_Schezar, BroodWar::Api::Enum::WeaponType::Hellfire_Missile_Pack_Alan_Schezar);
		WeaponType->Add(&BWAPI::WeaponTypes::Arclite_Cannon,                     BroodWar::Api::Enum::WeaponType::Arclite_Cannon);
		WeaponType->Add(&BWAPI::WeaponTypes::Arclite_Cannon_Edmund_Duke,         BroodWar::Api::Enum::WeaponType::Arclite_Cannon_Edmund_Duke);
		WeaponType->Add(&BWAPI::WeaponTypes::Fusion_Cutter,                      BroodWar::Api::Enum::WeaponType::Fusion_Cutter);
		WeaponType->Add(&BWAPI::WeaponTypes::Gemini_Missiles,                    BroodWar::Api::Enum::WeaponType::Gemini_Missiles);
		WeaponType->Add(&BWAPI::WeaponTypes::Gemini_Missiles_Tom_Kazansky,       BroodWar::Api::Enum::WeaponType::Gemini_Missiles_Tom_Kazansky);
		WeaponType->Add(&BWAPI::WeaponTypes::Burst_Lasers,                       BroodWar::Api::Enum::WeaponType::Burst_Lasers);
		WeaponType->Add(&BWAPI::WeaponTypes::Burst_Lasers_Tom_Kazansky,          BroodWar::Api::Enum::WeaponType::Burst_Lasers_Tom_Kazansky);
		WeaponType->Add(&BWAPI::WeaponTypes::ATS_Laser_Battery,                  BroodWar::Api::Enum::WeaponType::ATS_Laser_Battery);
		WeaponType->Add(&BWAPI::WeaponTypes::ATS_Laser_Battery_Hero,             BroodWar::Api::Enum::WeaponType::ATS_Laser_Battery_Hero);
		WeaponType->Add(&BWAPI::WeaponTypes::ATS_Laser_Battery_Hyperion,         BroodWar::Api::Enum::WeaponType::ATS_Laser_Battery_Hyperion);
		WeaponType->Add(&BWAPI::WeaponTypes::ATA_Laser_Battery,                  BroodWar::Api::Enum::WeaponType::ATA_Laser_Battery);
		WeaponType->Add(&BWAPI::WeaponTypes::ATA_Laser_Battery_Hero,             BroodWar::Api::Enum::WeaponType::ATA_Laser_Battery_Hero);
		WeaponType->Add(&BWAPI::WeaponTypes::ATA_Laser_Battery_Hyperion,         BroodWar::Api::Enum::WeaponType::ATA_Laser_Battery_Hyperion);
		WeaponType->Add(&BWAPI::WeaponTypes::Flame_Thrower,                      BroodWar::Api::Enum::WeaponType::Flame_Thrower);
		WeaponType->Add(&BWAPI::WeaponTypes::Flame_Thrower_Gui_Montag,           BroodWar::Api::Enum::WeaponType::Flame_Thrower_Gui_Montag);
		WeaponType->Add(&BWAPI::WeaponTypes::Arclite_Shock_Cannon,               BroodWar::Api::Enum::WeaponType::Arclite_Shock_Cannon);
		WeaponType->Add(&BWAPI::WeaponTypes::Arclite_Shock_Cannon_Edmund_Duke,   BroodWar::Api::Enum::WeaponType::Arclite_Shock_Cannon_Edmund_Duke);
		WeaponType->Add(&BWAPI::WeaponTypes::Longbolt_Missile,                   BroodWar::Api::Enum::WeaponType::Longbolt_Missile);
		WeaponType->Add(&BWAPI::WeaponTypes::Claws,                              BroodWar::Api::Enum::WeaponType::Claws);
		WeaponType->Add(&BWAPI::WeaponTypes::Claws_Devouring_One,                BroodWar::Api::Enum::WeaponType::Claws_Devouring_One);
		WeaponType->Add(&BWAPI::WeaponTypes::Claws_Infested_Kerrigan,            BroodWar::Api::Enum::WeaponType::Claws_Infested_Kerrigan);
		WeaponType->Add(&BWAPI::WeaponTypes::Needle_Spines,                      BroodWar::Api::Enum::WeaponType::Needle_Spines);
		WeaponType->Add(&BWAPI::WeaponTypes::Needle_Spines_Hunter_Killer,        BroodWar::Api::Enum::WeaponType::Needle_Spines_Hunter_Killer);
		WeaponType->Add(&BWAPI::WeaponTypes::Kaiser_Blades,                      BroodWar::Api::Enum::WeaponType::Kaiser_Blades);
		WeaponType->Add(&BWAPI::WeaponTypes::Kaiser_Blades_Torrasque,            BroodWar::Api::Enum::WeaponType::Kaiser_Blades_Torrasque);
		WeaponType->Add(&BWAPI::WeaponTypes::Toxic_Spores,                       BroodWar::Api::Enum::WeaponType::Toxic_Spores);
		WeaponType->Add(&BWAPI::WeaponTypes::Spines,                             BroodWar::Api::Enum::WeaponType::Spines);
		WeaponType->Add(&BWAPI::WeaponTypes::Acid_Spore,                         BroodWar::Api::Enum::WeaponType::Acid_Spore);
		WeaponType->Add(&BWAPI::WeaponTypes::Acid_Spore_Kukulza,                 BroodWar::Api::Enum::WeaponType::Acid_Spore_Kukulza);
		WeaponType->Add(&BWAPI::WeaponTypes::Glave_Wurm,                         BroodWar::Api::Enum::WeaponType::Glave_Wurm);
		WeaponType->Add(&BWAPI::WeaponTypes::Glave_Wurm_Kukulza,                 BroodWar::Api::Enum::WeaponType::Glave_Wurm_Kukulza);
		WeaponType->Add(&BWAPI::WeaponTypes::Seeker_Spores,                      BroodWar::Api::Enum::WeaponType::Seeker_Spores);
		WeaponType->Add(&BWAPI::WeaponTypes::Subterranean_Tentacle,              BroodWar::Api::Enum::WeaponType::Subterranean_Tentacle);
		WeaponType->Add(&BWAPI::WeaponTypes::Suicide_Infested_Terran,            BroodWar::Api::Enum::WeaponType::Suicide_Infested_Terran);
		WeaponType->Add(&BWAPI::WeaponTypes::Suicide_Scourge,                    BroodWar::Api::Enum::WeaponType::Suicide_Scourge);
		WeaponType->Add(&BWAPI::WeaponTypes::Particle_Beam,                      BroodWar::Api::Enum::WeaponType::Particle_Beam);
		WeaponType->Add(&BWAPI::WeaponTypes::Psi_Blades,                         BroodWar::Api::Enum::WeaponType::Psi_Blades);
		WeaponType->Add(&BWAPI::WeaponTypes::Psi_Blades_Fenix,                   BroodWar::Api::Enum::WeaponType::Psi_Blades_Fenix);
		WeaponType->Add(&BWAPI::WeaponTypes::Phase_Disruptor,                    BroodWar::Api::Enum::WeaponType::Phase_Disruptor);
		WeaponType->Add(&BWAPI::WeaponTypes::Phase_Disruptor_Fenix,              BroodWar::Api::Enum::WeaponType::Phase_Disruptor_Fenix);
		WeaponType->Add(&BWAPI::WeaponTypes::Psi_Assault,                        BroodWar::Api::Enum::WeaponType::Psi_Assault);
		WeaponType->Add(&BWAPI::WeaponTypes::Psionic_Shockwave,                  BroodWar::Api::Enum::WeaponType::Psionic_Shockwave);
		WeaponType->Add(&BWAPI::WeaponTypes::Psionic_Shockwave_TZ_Archon,        BroodWar::Api::Enum::WeaponType::Psionic_Shockwave_TZ_Archon);
		WeaponType->Add(&BWAPI::WeaponTypes::Dual_Photon_Blasters,               BroodWar::Api::Enum::WeaponType::Dual_Photon_Blasters);
		WeaponType->Add(&BWAPI::WeaponTypes::Dual_Photon_Blasters_Mojo,          BroodWar::Api::Enum::WeaponType::Dual_Photon_Blasters_Mojo);
		WeaponType->Add(&BWAPI::WeaponTypes::Dual_Photon_Blasters_Artanis,       BroodWar::Api::Enum::WeaponType::Dual_Photon_Blasters_Artanis);
		WeaponType->Add(&BWAPI::WeaponTypes::Anti_Matter_Missiles,               BroodWar::Api::Enum::WeaponType::Anti_Matter_Missiles);
		WeaponType->Add(&BWAPI::WeaponTypes::Anti_Matter_Missiles_Mojo,          BroodWar::Api::Enum::WeaponType::Anti_Matter_Missiles_Mojo);
		WeaponType->Add(&BWAPI::WeaponTypes::Anti_Matter_Missiles_Artanis,       BroodWar::Api::Enum::WeaponType::Anti_Matter_Missiles_Artanis);
		WeaponType->Add(&BWAPI::WeaponTypes::Phase_Disruptor_Cannon,             BroodWar::Api::Enum::WeaponType::Phase_Disruptor_Cannon);
		WeaponType->Add(&BWAPI::WeaponTypes::Phase_Disruptor_Cannon_Danimoth,    BroodWar::Api::Enum::WeaponType::Phase_Disruptor_Cannon_Danimoth);
		WeaponType->Add(&BWAPI::WeaponTypes::Pulse_Cannon,                       BroodWar::Api::Enum::WeaponType::Pulse_Cannon);
		WeaponType->Add(&BWAPI::WeaponTypes::STS_Photon_Cannon,                  BroodWar::Api::Enum::WeaponType::STS_Photon_Cannon);
		WeaponType->Add(&BWAPI::WeaponTypes::STA_Photon_Cannon,                  BroodWar::Api::Enum::WeaponType::STA_Photon_Cannon);
		WeaponType->Add(&BWAPI::WeaponTypes::Scarab,                             BroodWar::Api::Enum::WeaponType::Scarab);
		WeaponType->Add(&BWAPI::WeaponTypes::Neutron_Flare,                      BroodWar::Api::Enum::WeaponType::Neutron_Flare);
		WeaponType->Add(&BWAPI::WeaponTypes::Halo_Rockets,                       BroodWar::Api::Enum::WeaponType::Halo_Rockets);
		WeaponType->Add(&BWAPI::WeaponTypes::Corrosive_Acid,                     BroodWar::Api::Enum::WeaponType::Corrosive_Acid);
		WeaponType->Add(&BWAPI::WeaponTypes::Subterranean_Spines,                BroodWar::Api::Enum::WeaponType::Subterranean_Spines);
		WeaponType->Add(&BWAPI::WeaponTypes::Warp_Blades,                        BroodWar::Api::Enum::WeaponType::Warp_Blades);
		WeaponType->Add(&BWAPI::WeaponTypes::Warp_Blades_Hero,                   BroodWar::Api::Enum::WeaponType::Warp_Blades_Hero);
		WeaponType->Add(&BWAPI::WeaponTypes::Warp_Blades_Zeratul,                BroodWar::Api::Enum::WeaponType::Warp_Blades_Zeratul);
		WeaponType->Add(&BWAPI::WeaponTypes::Independant_Laser_Battery,          BroodWar::Api::Enum::WeaponType::Independant_Laser_Battery);
		WeaponType->Add(&BWAPI::WeaponTypes::Twin_Autocannons_Floor_Trap,        BroodWar::Api::Enum::WeaponType::Twin_Autocannons_Floor_Trap);
		WeaponType->Add(&BWAPI::WeaponTypes::Hellfire_Missile_Pack_Wall_Trap,    BroodWar::Api::Enum::WeaponType::Hellfire_Missile_Pack_Wall_Trap);
		WeaponType->Add(&BWAPI::WeaponTypes::Flame_Thrower_Wall_Trap,            BroodWar::Api::Enum::WeaponType::Flame_Thrower_Wall_Trap);
		WeaponType->Add(&BWAPI::WeaponTypes::Hellfire_Missile_Pack_Floor_Trap,   BroodWar::Api::Enum::WeaponType::Hellfire_Missile_Pack_Floor_Trap);
		WeaponType->Add(&BWAPI::WeaponTypes::Yamato_Gun,                         BroodWar::Api::Enum::WeaponType::Yamato_Gun);
		WeaponType->Add(&BWAPI::WeaponTypes::Nuclear_Strike,                     BroodWar::Api::Enum::WeaponType::Nuclear_Strike);
		WeaponType->Add(&BWAPI::WeaponTypes::Lockdown,                           BroodWar::Api::Enum::WeaponType::Lockdown);
		WeaponType->Add(&BWAPI::WeaponTypes::EMP_Shockwave,                      BroodWar::Api::Enum::WeaponType::EMP_Shockwave);
		WeaponType->Add(&BWAPI::WeaponTypes::Irradiate,                          BroodWar::Api::Enum::WeaponType::Irradiate);
		WeaponType->Add(&BWAPI::WeaponTypes::Parasite,                           BroodWar::Api::Enum::WeaponType::Parasite);
		WeaponType->Add(&BWAPI::WeaponTypes::Spawn_Broodlings,                   BroodWar::Api::Enum::WeaponType::Spawn_Broodlings);
		WeaponType->Add(&BWAPI::WeaponTypes::Ensnare,                            BroodWar::Api::Enum::WeaponType::Ensnare);
		WeaponType->Add(&BWAPI::WeaponTypes::Dark_Swarm,                         BroodWar::Api::Enum::WeaponType::Dark_Swarm);
		WeaponType->Add(&BWAPI::WeaponTypes::Plague,                             BroodWar::Api::Enum::WeaponType::Plague);
		WeaponType->Add(&BWAPI::WeaponTypes::Consume,                            BroodWar::Api::Enum::WeaponType::Consume);
		WeaponType->Add(&BWAPI::WeaponTypes::Stasis_Field,                       BroodWar::Api::Enum::WeaponType::Stasis_Field);
		WeaponType->Add(&BWAPI::WeaponTypes::Psionic_Storm,                      BroodWar::Api::Enum::WeaponType::Psionic_Storm);
		WeaponType->Add(&BWAPI::WeaponTypes::Disruption_Web,                     BroodWar::Api::Enum::WeaponType::Disruption_Web);
		WeaponType->Add(&BWAPI::WeaponTypes::Restoration,                        BroodWar::Api::Enum::WeaponType::Restoration);
		WeaponType->Add(&BWAPI::WeaponTypes::Mind_Control,                       BroodWar::Api::Enum::WeaponType::Mind_Control);
		WeaponType->Add(&BWAPI::WeaponTypes::Feedback,                           BroodWar::Api::Enum::WeaponType::Feedback);
		WeaponType->Add(&BWAPI::WeaponTypes::Optical_Flare,                      BroodWar::Api::Enum::WeaponType::Optical_Flare);
		WeaponType->Add(&BWAPI::WeaponTypes::Maelstrom,                          BroodWar::Api::Enum::WeaponType::Maelstrom);
		WeaponType->Add(&BWAPI::WeaponTypes::None,                               BroodWar::Api::Enum::WeaponType::None);
		WeaponType->Add(&BWAPI::WeaponTypes::Unknown,                            BroodWar::Api::Enum::WeaponType::Unknown);
		#pragma endregion

		#pragma region DamageType
		DamageType = gcnew EnumClassMap<BWAPI::DamageType, BroodWar::Api::Enum::DamageType>(7);
		DamageType->Add(&BWAPI::DamageTypes::Independent,  BroodWar::Api::Enum::DamageType::Independent);
		DamageType->Add(&BWAPI::DamageTypes::Explosive,    BroodWar::Api::Enum::DamageType::Explosive);
		DamageType->Add(&BWAPI::DamageTypes::Concussive,   BroodWar::Api::Enum::DamageType::Concussive);
		DamageType->Add(&BWAPI::DamageTypes::Normal,       BroodWar::Api::Enum::DamageType::Normal);
		DamageType->Add(&BWAPI::DamageTypes::Ignore_Armor, BroodWar::Api::Enum::DamageType::IgnoreArmor);
		DamageType->Add(&BWAPI::DamageTypes::None,         BroodWar::Api::Enum::DamageType::None);
		DamageType->Add(&BWAPI::DamageTypes::Unknown,      BroodWar::Api::Enum::DamageType::Unknown);
		#pragma endregion

		#pragma region ExplosionType
		ExplosionType = gcnew EnumClassMap<BWAPI::ExplosionType, BroodWar::Api::Enum::ExplosionType>(25);
		ExplosionType->Add(&BWAPI::ExplosionTypes::None,            BroodWar::Api::Enum::ExplosionType::None);
		ExplosionType->Add(&BWAPI::ExplosionTypes::Normal,          BroodWar::Api::Enum::ExplosionType::Normal);
		ExplosionType->Add(&BWAPI::ExplosionTypes::Radial_Splash,   BroodWar::Api::Enum::ExplosionType::RadialSplash);
		ExplosionType->Add(&BWAPI::ExplosionTypes::Enemy_Splash,    BroodWar::Api::Enum::ExplosionType::EnemySplash);
		ExplosionType->Add(&BWAPI::ExplosionTypes::Lockdown,        BroodWar::Api::Enum::ExplosionType::Lockdown);
		ExplosionType->Add(&BWAPI::ExplosionTypes::Nuclear_Missile, BroodWar::Api::Enum::ExplosionType::NuclearMissile);
		ExplosionType->Add(&BWAPI::ExplosionTypes::Parasite,        BroodWar::Api::Enum::ExplosionType::Parasite);
		ExplosionType->Add(&BWAPI::ExplosionTypes::Broodlings,      BroodWar::Api::Enum::ExplosionType::Broodlings);
		ExplosionType->Add(&BWAPI::ExplosionTypes::EMP_Shockwave,   BroodWar::Api::Enum::ExplosionType::EmpShockwave);
		ExplosionType->Add(&BWAPI::ExplosionTypes::Irradiate,       BroodWar::Api::Enum::ExplosionType::Irradiate);
		ExplosionType->Add(&BWAPI::ExplosionTypes::Ensnare,         BroodWar::Api::Enum::ExplosionType::Ensnare);
		ExplosionType->Add(&BWAPI::ExplosionTypes::Plague,          BroodWar::Api::Enum::ExplosionType::Plague);
		ExplosionType->Add(&BWAPI::ExplosionTypes::Stasis_Field,    BroodWar::Api::Enum::ExplosionType::StasisField);
		ExplosionType->Add(&BWAPI::ExplosionTypes::Dark_Swarm,      BroodWar::Api::Enum::ExplosionType::DarkSwarm);
		ExplosionType->Add(&BWAPI::ExplosionTypes::Consume,         BroodWar::Api::Enum::ExplosionType::Consume);
		ExplosionType->Add(&BWAPI::ExplosionTypes::Yamato_Gun,      BroodWar::Api::Enum::ExplosionType::YamatoGun);
		ExplosionType->Add(&BWAPI::ExplosionTypes::Restoration,     BroodWar::Api::Enum::ExplosionType::Restoration);
		ExplosionType->Add(&BWAPI::ExplosionTypes::Disruption_Web,  BroodWar::Api::Enum::ExplosionType::DisruptionWeb);
		ExplosionType->Add(&BWAPI::ExplosionTypes::Corrosive_Acid,  BroodWar::Api::Enum::ExplosionType::CorrosiveAcid);
		ExplosionType->Add(&BWAPI::ExplosionTypes::Mind_Control,    BroodWar::Api::Enum::ExplosionType::MindControl);
		ExplosionType->Add(&BWAPI::ExplosionTypes::Feedback,        BroodWar::Api::Enum::ExplosionType::Feedback);
		ExplosionType->Add(&BWAPI::ExplosionTypes::Optical_Flare,   BroodWar::Api::Enum::ExplosionType::OpticalFlare);
		ExplosionType->Add(&BWAPI::ExplosionTypes::Maelstrom,       BroodWar::Api::Enum::ExplosionType::Maelstrom);
		ExplosionType->Add(&BWAPI::ExplosionTypes::Air_Splash,      BroodWar::Api::Enum::ExplosionType::AirSplash);
		ExplosionType->Add(&BWAPI::ExplosionTypes::Unknown,         BroodWar::Api::Enum::ExplosionType::Unknown);
		#pragma endregion

		#pragma region TechType
		TechType = gcnew EnumClassMap<BWAPI::TechType, BroodWar::Api::Enum::TechType>(36);
		TechType->Add(&BWAPI::TechTypes::Stim_Packs,         BroodWar::Api::Enum::TechType::Stim_Packs);
		TechType->Add(&BWAPI::TechTypes::Lockdown,           BroodWar::Api::Enum::TechType::Lockdown);
		TechType->Add(&BWAPI::TechTypes::EMP_Shockwave,      BroodWar::Api::Enum::TechType::EMP_Shockwave);
		TechType->Add(&BWAPI::TechTypes::Spider_Mines,       BroodWar::Api::Enum::TechType::Spider_Mines);
		TechType->Add(&BWAPI::TechTypes::Scanner_Sweep,      BroodWar::Api::Enum::TechType::Scanner_Sweep);
		TechType->Add(&BWAPI::TechTypes::Tank_Siege_Mode,    BroodWar::Api::Enum::TechType::Tank_Siege_Mode);
		TechType->Add(&BWAPI::TechTypes::Defensive_Matrix,   BroodWar::Api::Enum::TechType::Defensive_Matrix);
		TechType->Add(&BWAPI::TechTypes::Irradiate,          BroodWar::Api::Enum::TechType::Irradiate);
		TechType->Add(&BWAPI::TechTypes::Yamato_Gun,         BroodWar::Api::Enum::TechType::Yamato_Gun);
		TechType->Add(&BWAPI::TechTypes::Cloaking_Field,     BroodWar::Api::Enum::TechType::Cloaking_Field);
		TechType->Add(&BWAPI::TechTypes::Personnel_Cloaking, BroodWar::Api::Enum::TechType::Personnel_Cloaking);
		TechType->Add(&BWAPI::TechTypes::Burrowing,          BroodWar::Api::Enum::TechType::Burrowing);
		TechType->Add(&BWAPI::TechTypes::Infestation,        BroodWar::Api::Enum::TechType::Infestation);
		TechType->Add(&BWAPI::TechTypes::Spawn_Broodlings,   BroodWar::Api::Enum::TechType::Spawn_Broodlings);
		TechType->Add(&BWAPI::TechTypes::Dark_Swarm,         BroodWar::Api::Enum::TechType::Dark_Swarm);
		TechType->Add(&BWAPI::TechTypes::Plague,             BroodWar::Api::Enum::TechType::Plague);
		TechType->Add(&BWAPI::TechTypes::Consume,            BroodWar::Api::Enum::TechType::Consume);
		TechType->Add(&BWAPI::TechTypes::Ensnare,            BroodWar::Api::Enum::TechType::Ensnare);
		TechType->Add(&BWAPI::TechTypes::Parasite,           BroodWar::Api::Enum::TechType::Parasite);
		TechType->Add(&BWAPI::TechTypes::Psionic_Storm,      BroodWar::Api::Enum::TechType::Psionic_Storm);
		TechType->Add(&BWAPI::TechTypes::Hallucination,      BroodWar::Api::Enum::TechType::Hallucination);
		TechType->Add(&BWAPI::TechTypes::Recall,             BroodWar::Api::Enum::TechType::Recall);
		TechType->Add(&BWAPI::TechTypes::Stasis_Field,       BroodWar::Api::Enum::TechType::Stasis_Field);
		TechType->Add(&BWAPI::TechTypes::Archon_Warp,        BroodWar::Api::Enum::TechType::Archon_Warp);
		TechType->Add(&BWAPI::TechTypes::Restoration,        BroodWar::Api::Enum::TechType::Restoration);
		TechType->Add(&BWAPI::TechTypes::Disruption_Web,     BroodWar::Api::Enum::TechType::Disruption_Web);
		TechType->Add(&BWAPI::TechTypes::Mind_Control,       BroodWar::Api::Enum::TechType::Mind_Control);
		TechType->Add(&BWAPI::TechTypes::Dark_Archon_Meld,   BroodWar::Api::Enum::TechType::Dark_Archon_Meld);
		TechType->Add(&BWAPI::TechTypes::Feedback,           BroodWar::Api::Enum::TechType::Feedback);
		TechType->Add(&BWAPI::TechTypes::Optical_Flare,      BroodWar::Api::Enum::TechType::Optical_Flare);
		TechType->Add(&BWAPI::TechTypes::Maelstrom,          BroodWar::Api::Enum::TechType::Maelstrom);
		TechType->Add(&BWAPI::TechTypes::Lurker_Aspect,      BroodWar::Api::Enum::TechType::Lurker_Aspect);
		TechType->Add(&BWAPI::TechTypes::Healing,            BroodWar::Api::Enum::TechType::Healing);
		TechType->Add(&BWAPI::TechTypes::None,               BroodWar::Api::Enum::TechType::None);
		TechType->Add(&BWAPI::TechTypes::Unknown,            BroodWar::Api::Enum::TechType::Unknown);
		TechType->Add(&BWAPI::TechTypes::Nuclear_Strike,     BroodWar::Api::Enum::TechType::Nuclear_Strike);
		#pragma endregion

		#pragma region UpgradeType
		UpgradeType = gcnew EnumClassMap<BWAPI::UpgradeType, BroodWar::Api::Enum::UpgradeType>(52);
		UpgradeType->Add(&BWAPI::UpgradeTypes::Terran_Infantry_Armor,   BroodWar::Api::Enum::UpgradeType::Terran_Infantry_Armor);
		UpgradeType->Add(&BWAPI::UpgradeTypes::Terran_Vehicle_Plating,  BroodWar::Api::Enum::UpgradeType::Terran_Vehicle_Plating);
		UpgradeType->Add(&BWAPI::UpgradeTypes::Terran_Ship_Plating,     BroodWar::Api::Enum::UpgradeType::Terran_Ship_Plating);
		UpgradeType->Add(&BWAPI::UpgradeTypes::Zerg_Carapace,           BroodWar::Api::Enum::UpgradeType::Zerg_Carapace);
		UpgradeType->Add(&BWAPI::UpgradeTypes::Zerg_Flyer_Carapace,     BroodWar::Api::Enum::UpgradeType::Zerg_Flyer_Carapace);
		UpgradeType->Add(&BWAPI::UpgradeTypes::Protoss_Ground_Armor,    BroodWar::Api::Enum::UpgradeType::Protoss_Ground_Armor);
		UpgradeType->Add(&BWAPI::UpgradeTypes::Protoss_Air_Armor,       BroodWar::Api::Enum::UpgradeType::Protoss_Air_Armor);
		UpgradeType->Add(&BWAPI::UpgradeTypes::Terran_Infantry_Weapons, BroodWar::Api::Enum::UpgradeType::Terran_Infantry_Weapons);
		UpgradeType->Add(&BWAPI::UpgradeTypes::Terran_Vehicle_Weapons,  BroodWar::Api::Enum::UpgradeType::Terran_Vehicle_Weapons);
		UpgradeType->Add(&BWAPI::UpgradeTypes::Terran_Ship_Weapons,     BroodWar::Api::Enum::UpgradeType::Terran_Ship_Weapons);
		UpgradeType->Add(&BWAPI::UpgradeTypes::Zerg_Melee_Attacks,      BroodWar::Api::Enum::UpgradeType::Zerg_Melee_Attacks);
		UpgradeType->Add(&BWAPI::UpgradeTypes::Zerg_Missile_Attacks,    BroodWar::Api::Enum::UpgradeType::Zerg_Missile_Attacks);
		UpgradeType->Add(&BWAPI::UpgradeTypes::Zerg_Flyer_Attacks,      BroodWar::Api::Enum::UpgradeType::Zerg_Flyer_Attacks);
		UpgradeType->Add(&BWAPI::UpgradeTypes::Protoss_Ground_Weapons,  BroodWar::Api::Enum::UpgradeType::Protoss_Ground_Weapons);
		UpgradeType->Add(&BWAPI::UpgradeTypes::Protoss_Air_Weapons,     BroodWar::Api::Enum::UpgradeType::Protoss_Air_Weapons);
		UpgradeType->Add(&BWAPI::UpgradeTypes::Protoss_Plasma_Shields,  BroodWar::Api::Enum::UpgradeType::Protoss_Plasma_Shields);
		UpgradeType->Add(&BWAPI::UpgradeTypes::U_238_Shells,            BroodWar::Api::Enum::UpgradeType::U_238_Shells);
		UpgradeType->Add(&BWAPI::UpgradeTypes::Ion_Thrusters,           BroodWar::Api::Enum::UpgradeType::Ion_Thrusters);
		UpgradeType->Add(&BWAPI::UpgradeTypes::Titan_Reactor,           BroodWar::Api::Enum::UpgradeType::Titan_Reactor);
		UpgradeType->Add(&BWAPI::UpgradeTypes::Ocular_Implants,         BroodWar::Api::Enum::UpgradeType::Ocular_Implants);
		UpgradeType->Add(&BWAPI::UpgradeTypes::Moebius_Reactor,         BroodWar::Api::Enum::UpgradeType::Moebius_Reactor);
		UpgradeType->Add(&BWAPI::UpgradeTypes::Apollo_Reactor,          BroodWar::Api::Enum::UpgradeType::Apollo_Reactor);
		UpgradeType->Add(&BWAPI::UpgradeTypes::Colossus_Reactor,        BroodWar::Api::Enum::UpgradeType::Colossus_Reactor);
		UpgradeType->Add(&BWAPI::UpgradeTypes::Ventral_Sacs,            BroodWar::Api::Enum::UpgradeType::Ventral_Sacs);
		UpgradeType->Add(&BWAPI::UpgradeTypes::Antennae,                BroodWar::Api::Enum::UpgradeType::Antennae);
		UpgradeType->Add(&BWAPI::UpgradeTypes::Pneumatized_Carapace,    BroodWar::Api::Enum::UpgradeType::Pneumatized_Carapace);
		UpgradeType->Add(&BWAPI::UpgradeTypes::Metabolic_Boost,         BroodWar::Api::Enum::UpgradeType::Metabolic_Boost);
		UpgradeType->Add(&BWAPI::UpgradeTypes::Adrenal_Glands,          BroodWar::Api::Enum::UpgradeType::Adrenal_Glands);
		UpgradeType->Add(&BWAPI::UpgradeTypes::Muscular_Augments,       BroodWar::Api::Enum::UpgradeType::Muscular_Augments);
		UpgradeType->Add(&BWAPI::UpgradeTypes::Grooved_Spines,          BroodWar::Api::Enum::UpgradeType::Grooved_Spines);
		UpgradeType->Add(&BWAPI::UpgradeTypes::Gamete_Meiosis,          BroodWar::Api::Enum::UpgradeType::Gamete_Meiosis);
		UpgradeType->Add(&BWAPI::UpgradeTypes::Metasynaptic_Node,       BroodWar::Api::Enum::UpgradeType::Metasynaptic_Node);
		UpgradeType->Add(&BWAPI::UpgradeTypes::Singularity_Charge,      BroodWar::Api::Enum::UpgradeType::Singularity_Charge);
		UpgradeType->Add(&BWAPI::UpgradeTypes::Leg_Enhancements,        BroodWar::Api::Enum::UpgradeType::Leg_Enhancements);
		UpgradeType->Add(&BWAPI::UpgradeTypes::Scarab_Damage,           BroodWar::Api::Enum::UpgradeType::Scarab_Damage);
		UpgradeType->Add(&BWAPI::UpgradeTypes::Reaver_Capacity,         BroodWar::Api::Enum::UpgradeType::Reaver_Capacity);
		UpgradeType->Add(&BWAPI::UpgradeTypes::Gravitic_Drive,          BroodWar::Api::Enum::UpgradeType::Gravitic_Drive);
		UpgradeType->Add(&BWAPI::UpgradeTypes::Sensor_Array,            BroodWar::Api::Enum::UpgradeType::Sensor_Array);
		UpgradeType->Add(&BWAPI::UpgradeTypes::Gravitic_Boosters,       BroodWar::Api::Enum::UpgradeType::Gravitic_Boosters);
		UpgradeType->Add(&BWAPI::UpgradeTypes::Khaydarin_Amulet,        BroodWar::Api::Enum::UpgradeType::Khaydarin_Amulet);
		UpgradeType->Add(&BWAPI::UpgradeTypes::Apial_Sensors,           BroodWar::Api::Enum::UpgradeType::Apial_Sensors);
		UpgradeType->Add(&BWAPI::UpgradeTypes::Gravitic_Thrusters,      BroodWar::Api::Enum::UpgradeType::Gravitic_Thrusters);
		UpgradeType->Add(&BWAPI::UpgradeTypes::Carrier_Capacity,        BroodWar::Api::Enum::UpgradeType::Carrier_Capacity);
		UpgradeType->Add(&BWAPI::UpgradeTypes::Khaydarin_Core,          BroodWar::Api::Enum::UpgradeType::Khaydarin_Core);
		UpgradeType->Add(&BWAPI::UpgradeTypes::Argus_Jewel,             BroodWar::Api::Enum::UpgradeType::Argus_Jewel);
		UpgradeType->Add(&BWAPI::UpgradeTypes::Argus_Talisman,          BroodWar::Api::Enum::UpgradeType::Argus_Talisman);
		UpgradeType->Add(&BWAPI::UpgradeTypes::Caduceus_Reactor,        BroodWar::Api::Enum::UpgradeType::Caduceus_Reactor);
		UpgradeType->Add(&BWAPI::UpgradeTypes::Chitinous_Plating,       BroodWar::Api::Enum::UpgradeType::Chitinous_Plating);
		UpgradeType->Add(&BWAPI::UpgradeTypes::Anabolic_Synthesis,      BroodWar::Api::Enum::UpgradeType::Anabolic_Synthesis);
		UpgradeType->Add(&BWAPI::UpgradeTypes::Charon_Boosters,         BroodWar::Api::Enum::UpgradeType::Charon_Boosters);
		UpgradeType->Add(&BWAPI::UpgradeTypes::None,                    BroodWar::Api::Enum::UpgradeType::None);
		UpgradeType->Add(&BWAPI::UpgradeTypes::Unknown,                 BroodWar::Api::Enum::UpgradeType::Unknown);
		#pragma endregion

		#pragma region PlayerType
		PlayerType = gcnew EnumClassMap<BWAPI::PlayerType, BroodWar::Api::Enum::PlayerType>(11);
		PlayerType->Add(&BWAPI::PlayerTypes::None,                 BroodWar::Api::Enum::PlayerType::None);
		PlayerType->Add(&BWAPI::PlayerTypes::Computer,             BroodWar::Api::Enum::PlayerType::Computer);
		PlayerType->Add(&BWAPI::PlayerTypes::Player,               BroodWar::Api::Enum::PlayerType::Player);
		PlayerType->Add(&BWAPI::PlayerTypes::RescuePassive,        BroodWar::Api::Enum::PlayerType::RescuePassive);
		PlayerType->Add(&BWAPI::PlayerTypes::EitherPreferComputer, BroodWar::Api::Enum::PlayerType::EitherPreferComputer);
		PlayerType->Add(&BWAPI::PlayerTypes::EitherPreferHuman,    BroodWar::Api::Enum::PlayerType::EitherPreferHuman);
		PlayerType->Add(&BWAPI::PlayerTypes::Neutral,              BroodWar::Api::Enum::PlayerType::Neutral);
		PlayerType->Add(&BWAPI::PlayerTypes::Closed,               BroodWar::Api::Enum::PlayerType::Closed);
		PlayerType->Add(&BWAPI::PlayerTypes::PlayerLeft,           BroodWar::Api::Enum::PlayerType::PlayerLeft);
		PlayerType->Add(&BWAPI::PlayerTypes::ComputerLeft,         BroodWar::Api::Enum::PlayerType::ComputerLeft);
		PlayerType->Add(&BWAPI::PlayerTypes::Unknown,              BroodWar::Api::Enum::PlayerType::Unknown);
		#pragma endregion

		#pragma region UnitType
		UnitType = gcnew EnumClassMap<BWAPI::UnitType, BroodWar::Api::Enum::UnitType>(211);
		UnitType->Add(&BWAPI::UnitTypes::Terran_Marine,                   BroodWar::Api::Enum::UnitType::Terran_Marine);
		UnitType->Add(&BWAPI::UnitTypes::Hero_Jim_Raynor_Marine,          BroodWar::Api::Enum::UnitType::Hero_Jim_Raynor_Marine);
		UnitType->Add(&BWAPI::UnitTypes::Terran_Ghost,                    BroodWar::Api::Enum::UnitType::Terran_Ghost);
		UnitType->Add(&BWAPI::UnitTypes::Hero_Sarah_Kerrigan,             BroodWar::Api::Enum::UnitType::Hero_Sarah_Kerrigan);
		UnitType->Add(&BWAPI::UnitTypes::Hero_Samir_Duran,                BroodWar::Api::Enum::UnitType::Hero_Samir_Duran);
		UnitType->Add(&BWAPI::UnitTypes::Hero_Infested_Duran,             BroodWar::Api::Enum::UnitType::Hero_Infested_Duran);
		UnitType->Add(&BWAPI::UnitTypes::Hero_Alexei_Stukov,              BroodWar::Api::Enum::UnitType::Hero_Alexei_Stukov);
		UnitType->Add(&BWAPI::UnitTypes::Terran_Vulture,                  BroodWar::Api::Enum::UnitType::Terran_Vulture);
		UnitType->Add(&BWAPI::UnitTypes::Hero_Jim_Raynor_Vulture,         BroodWar::Api::Enum::UnitType::Hero_Jim_Raynor_Vulture);
		UnitType->Add(&BWAPI::UnitTypes::Terran_Goliath,                  BroodWar::Api::Enum::UnitType::Terran_Goliath);
		UnitType->Add(&BWAPI::UnitTypes::Hero_Alan_Schezar,               BroodWar::Api::Enum::UnitType::Hero_Alan_Schezar);
		UnitType->Add(&BWAPI::UnitTypes::Terran_Siege_Tank_Tank_Mode,     BroodWar::Api::Enum::UnitType::Terran_Siege_Tank_Tank_Mode);
		UnitType->Add(&BWAPI::UnitTypes::Hero_Edmund_Duke_Tank_Mode,      BroodWar::Api::Enum::UnitType::Hero_Edmund_Duke_Tank_Mode);
		UnitType->Add(&BWAPI::UnitTypes::Terran_SCV,                      BroodWar::Api::Enum::UnitType::Terran_SCV);
		UnitType->Add(&BWAPI::UnitTypes::Terran_Wraith,                   BroodWar::Api::Enum::UnitType::Terran_Wraith);
		UnitType->Add(&BWAPI::UnitTypes::Hero_Tom_Kazansky,               BroodWar::Api::Enum::UnitType::Hero_Tom_Kazansky);
		UnitType->Add(&BWAPI::UnitTypes::Terran_Science_Vessel,           BroodWar::Api::Enum::UnitType::Terran_Science_Vessel);
		UnitType->Add(&BWAPI::UnitTypes::Hero_Magellan,                   BroodWar::Api::Enum::UnitType::Hero_Magellan);
		UnitType->Add(&BWAPI::UnitTypes::Terran_Dropship,                 BroodWar::Api::Enum::UnitType::Terran_Dropship);
		UnitType->Add(&BWAPI::UnitTypes::Terran_Battlecruiser,            BroodWar::Api::Enum::UnitType::Terran_Battlecruiser);
		UnitType->Add(&BWAPI::UnitTypes::Hero_Arcturus_Mengsk,            BroodWar::Api::Enum::UnitType::Hero_Arcturus_Mengsk);
		UnitType->Add(&BWAPI::UnitTypes::Hero_Hyperion,                   BroodWar::Api::Enum::UnitType::Hero_Hyperion);
		UnitType->Add(&BWAPI::UnitTypes::Hero_Norad_II,                   BroodWar::Api::Enum::UnitType::Hero_Norad_II);
		UnitType->Add(&BWAPI::UnitTypes::Hero_Gerard_DuGalle,             BroodWar::Api::Enum::UnitType::Hero_Gerard_DuGalle);
		UnitType->Add(&BWAPI::UnitTypes::Terran_Vulture_Spider_Mine,      BroodWar::Api::Enum::UnitType::Terran_Vulture_Spider_Mine);
		UnitType->Add(&BWAPI::UnitTypes::Terran_Nuclear_Missile,          BroodWar::Api::Enum::UnitType::Terran_Nuclear_Missile);
		UnitType->Add(&BWAPI::UnitTypes::Terran_Siege_Tank_Siege_Mode,    BroodWar::Api::Enum::UnitType::Terran_Siege_Tank_Siege_Mode);
		UnitType->Add(&BWAPI::UnitTypes::Hero_Edmund_Duke_Siege_Mode,     BroodWar::Api::Enum::UnitType::Hero_Edmund_Duke_Siege_Mode);
		UnitType->Add(&BWAPI::UnitTypes::Terran_Firebat,                  BroodWar::Api::Enum::UnitType::Terran_Firebat);
		UnitType->Add(&BWAPI::UnitTypes::Hero_Gui_Montag,                 BroodWar::Api::Enum::UnitType::Hero_Gui_Montag);
		UnitType->Add(&BWAPI::UnitTypes::Spell_Scanner_Sweep,             BroodWar::Api::Enum::UnitType::Spell_Scanner_Sweep);
		UnitType->Add(&BWAPI::UnitTypes::Terran_Medic,                    BroodWar::Api::Enum::UnitType::Terran_Medic);
		UnitType->Add(&BWAPI::UnitTypes::Terran_Civilian,                 BroodWar::Api::Enum::UnitType::Terran_Civilian);
		UnitType->Add(&BWAPI::UnitTypes::Zerg_Larva,                      BroodWar::Api::Enum::UnitType::Zerg_Larva);
		UnitType->Add(&BWAPI::UnitTypes::Zerg_Egg,                        BroodWar::Api::Enum::UnitType::Zerg_Egg);
		UnitType->Add(&BWAPI::UnitTypes::Zerg_Zergling,                   BroodWar::Api::Enum::UnitType::Zerg_Zergling);
		UnitType->Add(&BWAPI::UnitTypes::Hero_Devouring_One,              BroodWar::Api::Enum::UnitType::Hero_Devouring_One);
		UnitType->Add(&BWAPI::UnitTypes::Hero_Infested_Kerrigan,          BroodWar::Api::Enum::UnitType::Hero_Infested_Kerrigan);
		UnitType->Add(&BWAPI::UnitTypes::Zerg_Hydralisk,                  BroodWar::Api::Enum::UnitType::Zerg_Hydralisk);
		UnitType->Add(&BWAPI::UnitTypes::Hero_Hunter_Killer,              BroodWar::Api::Enum::UnitType::Hero_Hunter_Killer);
		UnitType->Add(&BWAPI::UnitTypes::Zerg_Ultralisk,                  BroodWar::Api::Enum::UnitType::Zerg_Ultralisk);
		UnitType->Add(&BWAPI::UnitTypes::Hero_Torrasque,                  BroodWar::Api::Enum::UnitType::Hero_Torrasque);
		UnitType->Add(&BWAPI::UnitTypes::Zerg_Broodling,                  BroodWar::Api::Enum::UnitType::Zerg_Broodling);
		UnitType->Add(&BWAPI::UnitTypes::Zerg_Drone,                      BroodWar::Api::Enum::UnitType::Zerg_Drone);
		UnitType->Add(&BWAPI::UnitTypes::Zerg_Overlord,                   BroodWar::Api::Enum::UnitType::Zerg_Overlord);
		UnitType->Add(&BWAPI::UnitTypes::Hero_Yggdrasill,                 BroodWar::Api::Enum::UnitType::Hero_Yggdrasill);
		UnitType->Add(&BWAPI::UnitTypes::Zerg_Mutalisk,                   BroodWar::Api::Enum::UnitType::Zerg_Mutalisk);
		UnitType->Add(&BWAPI::UnitTypes::Hero_Kukulza_Mutalisk,           BroodWar::Api::Enum::UnitType::Hero_Kukulza_Mutalisk);
		UnitType->Add(&BWAPI::UnitTypes::Zerg_Guardian,                   BroodWar::Api::Enum::UnitType::Zerg_Guardian);
		UnitType->Add(&BWAPI::UnitTypes::Hero_Kukulza_Guardian,           BroodWar::Api::Enum::UnitType::Hero_Kukulza_Guardian);
		UnitType->Add(&BWAPI::UnitTypes::Zerg_Queen,                      BroodWar::Api::Enum::UnitType::Zerg_Queen);
		UnitType->Add(&BWAPI::UnitTypes::Hero_Matriarch,                  BroodWar::Api::Enum::UnitType::Hero_Matriarch);
		UnitType->Add(&BWAPI::UnitTypes::Zerg_Defiler,                    BroodWar::Api::Enum::UnitType::Zerg_Defiler);
		UnitType->Add(&BWAPI::UnitTypes::Hero_Unclean_One,                BroodWar::Api::Enum::UnitType::Hero_Unclean_One);
		UnitType->Add(&BWAPI::UnitTypes::Zerg_Scourge,                    BroodWar::Api::Enum::UnitType::Zerg_Scourge);
		UnitType->Add(&BWAPI::UnitTypes::Zerg_Infested_Terran,            BroodWar::Api::Enum::UnitType::Zerg_Infested_Terran);
		UnitType->Add(&BWAPI::UnitTypes::Terran_Valkyrie,                 BroodWar::Api::Enum::UnitType::Terran_Valkyrie);
		UnitType->Add(&BWAPI::UnitTypes::Zerg_Cocoon,                     BroodWar::Api::Enum::UnitType::Zerg_Cocoon);
		UnitType->Add(&BWAPI::UnitTypes::Protoss_Corsair,                 BroodWar::Api::Enum::UnitType::Protoss_Corsair);
		UnitType->Add(&BWAPI::UnitTypes::Hero_Raszagal,                   BroodWar::Api::Enum::UnitType::Hero_Raszagal);
		UnitType->Add(&BWAPI::UnitTypes::Protoss_Dark_Templar,            BroodWar::Api::Enum::UnitType::Protoss_Dark_Templar);
		UnitType->Add(&BWAPI::UnitTypes::Hero_Dark_Templar,               BroodWar::Api::Enum::UnitType::Hero_Dark_Templar);
		UnitType->Add(&BWAPI::UnitTypes::Hero_Zeratul,                    BroodWar::Api::Enum::UnitType::Hero_Zeratul);
		UnitType->Add(&BWAPI::UnitTypes::Zerg_Devourer,                   BroodWar::Api::Enum::UnitType::Zerg_Devourer);
		UnitType->Add(&BWAPI::UnitTypes::Protoss_Dark_Archon,             BroodWar::Api::Enum::UnitType::Protoss_Dark_Archon);
		UnitType->Add(&BWAPI::UnitTypes::Protoss_Probe,                   BroodWar::Api::Enum::UnitType::Protoss_Probe);
		UnitType->Add(&BWAPI::UnitTypes::Protoss_Zealot,                  BroodWar::Api::Enum::UnitType::Protoss_Zealot);
		UnitType->Add(&BWAPI::UnitTypes::Hero_Fenix_Zealot,               BroodWar::Api::Enum::UnitType::Hero_Fenix_Zealot);
		UnitType->Add(&BWAPI::UnitTypes::Protoss_Dragoon,                 BroodWar::Api::Enum::UnitType::Protoss_Dragoon);
		UnitType->Add(&BWAPI::UnitTypes::Hero_Fenix_Dragoon,              BroodWar::Api::Enum::UnitType::Hero_Fenix_Dragoon);
		UnitType->Add(&BWAPI::UnitTypes::Protoss_High_Templar,            BroodWar::Api::Enum::UnitType::Protoss_High_Templar);
		UnitType->Add(&BWAPI::UnitTypes::Hero_Tassadar,                   BroodWar::Api::Enum::UnitType::Hero_Tassadar);
		UnitType->Add(&BWAPI::UnitTypes::Hero_Aldaris,                    BroodWar::Api::Enum::UnitType::Hero_Aldaris);
		UnitType->Add(&BWAPI::UnitTypes::Protoss_Archon,                  BroodWar::Api::Enum::UnitType::Protoss_Archon);
		UnitType->Add(&BWAPI::UnitTypes::Hero_Tassadar_Zeratul_Archon,    BroodWar::Api::Enum::UnitType::Hero_Tassadar_Zeratul_Archon);
		UnitType->Add(&BWAPI::UnitTypes::Protoss_Shuttle,                 BroodWar::Api::Enum::UnitType::Protoss_Shuttle);
		UnitType->Add(&BWAPI::UnitTypes::Protoss_Scout,                   BroodWar::Api::Enum::UnitType::Protoss_Scout);
		UnitType->Add(&BWAPI::UnitTypes::Hero_Mojo,                       BroodWar::Api::Enum::UnitType::Hero_Mojo);
		UnitType->Add(&BWAPI::UnitTypes::Hero_Artanis,                    BroodWar::Api::Enum::UnitType::Hero_Artanis);
		UnitType->Add(&BWAPI::UnitTypes::Protoss_Arbiter,                 BroodWar::Api::Enum::UnitType::Protoss_Arbiter);
		UnitType->Add(&BWAPI::UnitTypes::Hero_Danimoth,                   BroodWar::Api::Enum::UnitType::Hero_Danimoth);
		UnitType->Add(&BWAPI::UnitTypes::Protoss_Carrier,                 BroodWar::Api::Enum::UnitType::Protoss_Carrier);
		UnitType->Add(&BWAPI::UnitTypes::Hero_Gantrithor,                 BroodWar::Api::Enum::UnitType::Hero_Gantrithor);
		UnitType->Add(&BWAPI::UnitTypes::Protoss_Interceptor,             BroodWar::Api::Enum::UnitType::Protoss_Interceptor);
		UnitType->Add(&BWAPI::UnitTypes::Protoss_Reaver,                  BroodWar::Api::Enum::UnitType::Protoss_Reaver);
		UnitType->Add(&BWAPI::UnitTypes::Hero_Warbringer,                 BroodWar::Api::Enum::UnitType::Hero_Warbringer);
		UnitType->Add(&BWAPI::UnitTypes::Protoss_Observer,                BroodWar::Api::Enum::UnitType::Protoss_Observer);
		UnitType->Add(&BWAPI::UnitTypes::Protoss_Scarab,                  BroodWar::Api::Enum::UnitType::Protoss_Scarab);
		UnitType->Add(&BWAPI::UnitTypes::Critter_Rhynadon,                BroodWar::Api::Enum::UnitType::Critter_Rhynadon);
		UnitType->Add(&BWAPI::UnitTypes::Critter_Bengalaas,               BroodWar::Api::Enum::UnitType::Critter_Bengalaas);
		UnitType->Add(&BWAPI::UnitTypes::Special_Cargo_Ship,              BroodWar::Api::Enum::UnitType::Special_Cargo_Ship);
		UnitType->Add(&BWAPI::UnitTypes::Special_Mercenary_Gunship,       BroodWar::Api::Enum::UnitType::Special_Mercenary_Gunship);
		UnitType->Add(&BWAPI::UnitTypes::Critter_Scantid,                 BroodWar::Api::Enum::UnitType::Critter_Scantid);
		UnitType->Add(&BWAPI::UnitTypes::Critter_Kakaru,                  BroodWar::Api::Enum::UnitType::Critter_Kakaru);
		UnitType->Add(&BWAPI::UnitTypes::Critter_Ragnasaur,               BroodWar::Api::Enum::UnitType::Critter_Ragnasaur);
		UnitType->Add(&BWAPI::UnitTypes::Critter_Ursadon,                 BroodWar::Api::Enum::UnitType::Critter_Ursadon);
		UnitType->Add(&BWAPI::UnitTypes::Zerg_Lurker_Egg,                 BroodWar::Api::Enum::UnitType::Zerg_Lurker_Egg);
		UnitType->Add(&BWAPI::UnitTypes::Zerg_Lurker,                     BroodWar::Api::Enum::UnitType::Zerg_Lurker);
		UnitType->Add(&BWAPI::UnitTypes::Spell_Disruption_Web,            BroodWar::Api::Enum::UnitType::Spell_Disruption_Web);
		UnitType->Add(&BWAPI::UnitTypes::Terran_Command_Center,           BroodWar::Api::Enum::UnitType::Terran_Command_Center);
		UnitType->Add(&BWAPI::UnitTypes::Terran_Comsat_Station,           BroodWar::Api::Enum::UnitType::Terran_Comsat_Station);
		UnitType->Add(&BWAPI::UnitTypes::Terran_Nuclear_Silo,             BroodWar::Api::Enum::UnitType::Terran_Nuclear_Silo);
		UnitType->Add(&BWAPI::UnitTypes::Terran_Supply_Depot,             BroodWar::Api::Enum::UnitType::Terran_Supply_Depot);
		UnitType->Add(&BWAPI::UnitTypes::Terran_Refinery,                 BroodWar::Api::Enum::UnitType::Terran_Refinery);
		UnitType->Add(&BWAPI::UnitTypes::Terran_Barracks,                 BroodWar::Api::Enum::UnitType::Terran_Barracks);
		UnitType->Add(&BWAPI::UnitTypes::Terran_Academy,                  BroodWar::Api::Enum::UnitType::Terran_Academy);
		UnitType->Add(&BWAPI::UnitTypes::Terran_Factory,                  BroodWar::Api::Enum::UnitType::Terran_Factory);
		UnitType->Add(&BWAPI::UnitTypes::Terran_Starport,                 BroodWar::Api::Enum::UnitType::Terran_Starport);
		UnitType->Add(&BWAPI::UnitTypes::Terran_Control_Tower,            BroodWar::Api::Enum::UnitType::Terran_Control_Tower);
		UnitType->Add(&BWAPI::UnitTypes::Terran_Science_Facility,         BroodWar::Api::Enum::UnitType::Terran_Science_Facility);
		UnitType->Add(&BWAPI::UnitTypes::Terran_Covert_Ops,               BroodWar::Api::Enum::UnitType::Terran_Covert_Ops);
		UnitType->Add(&BWAPI::UnitTypes::Terran_Physics_Lab,              BroodWar::Api::Enum::UnitType::Terran_Physics_Lab);
		UnitType->Add(&BWAPI::UnitTypes::Terran_Machine_Shop,             BroodWar::Api::Enum::UnitType::Terran_Machine_Shop);
		UnitType->Add(&BWAPI::UnitTypes::Terran_Engineering_Bay,          BroodWar::Api::Enum::UnitType::Terran_Engineering_Bay);
		UnitType->Add(&BWAPI::UnitTypes::Terran_Armory,                   BroodWar::Api::Enum::UnitType::Terran_Armory);
		UnitType->Add(&BWAPI::UnitTypes::Terran_Missile_Turret,           BroodWar::Api::Enum::UnitType::Terran_Missile_Turret);
		UnitType->Add(&BWAPI::UnitTypes::Terran_Bunker,                   BroodWar::Api::Enum::UnitType::Terran_Bunker);
		UnitType->Add(&BWAPI::UnitTypes::Special_Crashed_Norad_II,        BroodWar::Api::Enum::UnitType::Special_Crashed_Norad_II);
		UnitType->Add(&BWAPI::UnitTypes::Special_Ion_Cannon,              BroodWar::Api::Enum::UnitType::Special_Ion_Cannon);
		UnitType->Add(&BWAPI::UnitTypes::Zerg_Infested_Command_Center,    BroodWar::Api::Enum::UnitType::Zerg_Infested_Command_Center);
		UnitType->Add(&BWAPI::UnitTypes::Zerg_Hatchery,                   BroodWar::Api::Enum::UnitType::Zerg_Hatchery);
		UnitType->Add(&BWAPI::UnitTypes::Zerg_Lair,                       BroodWar::Api::Enum::UnitType::Zerg_Lair);
		UnitType->Add(&BWAPI::UnitTypes::Zerg_Hive,                       BroodWar::Api::Enum::UnitType::Zerg_Hive);
		UnitType->Add(&BWAPI::UnitTypes::Zerg_Nydus_Canal,                BroodWar::Api::Enum::UnitType::Zerg_Nydus_Canal);
		UnitType->Add(&BWAPI::UnitTypes::Zerg_Hydralisk_Den,              BroodWar::Api::Enum::UnitType::Zerg_Hydralisk_Den);
		UnitType->Add(&BWAPI::UnitTypes::Zerg_Defiler_Mound,              BroodWar::Api::Enum::UnitType::Zerg_Defiler_Mound);
		UnitType->Add(&BWAPI::UnitTypes::Zerg_Greater_Spire,              BroodWar::Api::Enum::UnitType::Zerg_Greater_Spire);
		UnitType->Add(&BWAPI::UnitTypes::Zerg_Queens_Nest,                BroodWar::Api::Enum::UnitType::Zerg_Queens_Nest);
		UnitType->Add(&BWAPI::UnitTypes::Zerg_Evolution_Chamber,          BroodWar::Api::Enum::UnitType::Zerg_Evolution_Chamber);
		UnitType->Add(&BWAPI::UnitTypes::Zerg_Ultralisk_Cavern,           BroodWar::Api::Enum::UnitType::Zerg_Ultralisk_Cavern);
		UnitType->Add(&BWAPI::UnitTypes::Zerg_Spire,                      BroodWar::Api::Enum::UnitType::Zerg_Spire);
		UnitType->Add(&BWAPI::UnitTypes::Zerg_Spawning_Pool,              BroodWar::Api::Enum::UnitType::Zerg_Spawning_Pool);
		UnitType->Add(&BWAPI::UnitTypes::Zerg_Creep_Colony,               BroodWar::Api::Enum::UnitType::Zerg_Creep_Colony);
		UnitType->Add(&BWAPI::UnitTypes::Zerg_Spore_Colony,               BroodWar::Api::Enum::UnitType::Zerg_Spore_Colony);
		UnitType->Add(&BWAPI::UnitTypes::Zerg_Sunken_Colony,              BroodWar::Api::Enum::UnitType::Zerg_Sunken_Colony);
		UnitType->Add(&BWAPI::UnitTypes::Special_Overmind_With_Shell,     BroodWar::Api::Enum::UnitType::Special_Overmind_With_Shell);
		UnitType->Add(&BWAPI::UnitTypes::Special_Overmind,                BroodWar::Api::Enum::UnitType::Special_Overmind);
		UnitType->Add(&BWAPI::UnitTypes::Zerg_Extractor,                  BroodWar::Api::Enum::UnitType::Zerg_Extractor);
		UnitType->Add(&BWAPI::UnitTypes::Special_Mature_Chrysalis,        BroodWar::Api::Enum::UnitType::Special_Mature_Chrysalis);
		UnitType->Add(&BWAPI::UnitTypes::Special_Cerebrate,               BroodWar::Api::Enum::UnitType::Special_Cerebrate);
		UnitType->Add(&BWAPI::UnitTypes::Special_Cerebrate_Daggoth,       BroodWar::Api::Enum::UnitType::Special_Cerebrate_Daggoth);
		UnitType->Add(&BWAPI::UnitTypes::Protoss_Nexus,                   BroodWar::Api::Enum::UnitType::Protoss_Nexus);
		UnitType->Add(&BWAPI::UnitTypes::Protoss_Robotics_Facility,       BroodWar::Api::Enum::UnitType::Protoss_Robotics_Facility);
		UnitType->Add(&BWAPI::UnitTypes::Protoss_Pylon,                   BroodWar::Api::Enum::UnitType::Protoss_Pylon);
		UnitType->Add(&BWAPI::UnitTypes::Protoss_Assimilator,             BroodWar::Api::Enum::UnitType::Protoss_Assimilator);
		UnitType->Add(&BWAPI::UnitTypes::Protoss_Observatory,             BroodWar::Api::Enum::UnitType::Protoss_Observatory);
		UnitType->Add(&BWAPI::UnitTypes::Protoss_Gateway,                 BroodWar::Api::Enum::UnitType::Protoss_Gateway);
		UnitType->Add(&BWAPI::UnitTypes::Protoss_Photon_Cannon,           BroodWar::Api::Enum::UnitType::Protoss_Photon_Cannon);
		UnitType->Add(&BWAPI::UnitTypes::Protoss_Citadel_of_Adun,         BroodWar::Api::Enum::UnitType::Protoss_Citadel_of_Adun);
		UnitType->Add(&BWAPI::UnitTypes::Protoss_Cybernetics_Core,        BroodWar::Api::Enum::UnitType::Protoss_Cybernetics_Core);
		UnitType->Add(&BWAPI::UnitTypes::Protoss_Templar_Archives,        BroodWar::Api::Enum::UnitType::Protoss_Templar_Archives);
		UnitType->Add(&BWAPI::UnitTypes::Protoss_Forge,                   BroodWar::Api::Enum::UnitType::Protoss_Forge);
		UnitType->Add(&BWAPI::UnitTypes::Protoss_Stargate,                BroodWar::Api::Enum::UnitType::Protoss_Stargate);
		UnitType->Add(&BWAPI::UnitTypes::Special_Stasis_Cell_Prison,      BroodWar::Api::Enum::UnitType::Special_Stasis_Cell_Prison);
		UnitType->Add(&BWAPI::UnitTypes::Protoss_Fleet_Beacon,            BroodWar::Api::Enum::UnitType::Protoss_Fleet_Beacon);
		UnitType->Add(&BWAPI::UnitTypes::Protoss_Arbiter_Tribunal,        BroodWar::Api::Enum::UnitType::Protoss_Arbiter_Tribunal);
		UnitType->Add(&BWAPI::UnitTypes::Protoss_Robotics_Support_Bay,    BroodWar::Api::Enum::UnitType::Protoss_Robotics_Support_Bay);
		UnitType->Add(&BWAPI::UnitTypes::Protoss_Shield_Battery,          BroodWar::Api::Enum::UnitType::Protoss_Shield_Battery);
		UnitType->Add(&BWAPI::UnitTypes::Special_Khaydarin_Crystal_Form,  BroodWar::Api::Enum::UnitType::Special_Khaydarin_Crystal_Form);
		UnitType->Add(&BWAPI::UnitTypes::Special_Protoss_Temple,          BroodWar::Api::Enum::UnitType::Special_Protoss_Temple);
		UnitType->Add(&BWAPI::UnitTypes::Special_XelNaga_Temple,          BroodWar::Api::Enum::UnitType::Special_XelNaga_Temple);
		UnitType->Add(&BWAPI::UnitTypes::Resource_Mineral_Field,          BroodWar::Api::Enum::UnitType::Resource_Mineral_Field);
		UnitType->Add(&BWAPI::UnitTypes::Resource_Mineral_Field_Type_2,   BroodWar::Api::Enum::UnitType::Resource_Mineral_Field_Type_2);
		UnitType->Add(&BWAPI::UnitTypes::Resource_Mineral_Field_Type_3,   BroodWar::Api::Enum::UnitType::Resource_Mineral_Field_Type_3);
		UnitType->Add(&BWAPI::UnitTypes::Special_Independant_Starport,    BroodWar::Api::Enum::UnitType::Special_Independant_Starport);
		UnitType->Add(&BWAPI::UnitTypes::Resource_Vespene_Geyser,         BroodWar::Api::Enum::UnitType::Resource_Vespene_Geyser);
		UnitType->Add(&BWAPI::UnitTypes::Special_Warp_Gate,               BroodWar::Api::Enum::UnitType::Special_Warp_Gate);
		UnitType->Add(&BWAPI::UnitTypes::Special_Psi_Disrupter,           BroodWar::Api::Enum::UnitType::Special_Psi_Disrupter);
		UnitType->Add(&BWAPI::UnitTypes::Special_Power_Generator,         BroodWar::Api::Enum::UnitType::Special_Power_Generator);
		UnitType->Add(&BWAPI::UnitTypes::Special_Overmind_Cocoon,         BroodWar::Api::Enum::UnitType::Special_Overmind_Cocoon);
		UnitType->Add(&BWAPI::UnitTypes::Special_Zerg_Beacon,             BroodWar::Api::Enum::UnitType::Special_Zerg_Beacon);
		UnitType->Add(&BWAPI::UnitTypes::Special_Terran_Beacon,           BroodWar::Api::Enum::UnitType::Special_Terran_Beacon);
		UnitType->Add(&BWAPI::UnitTypes::Special_Protoss_Beacon,          BroodWar::Api::Enum::UnitType::Special_Protoss_Beacon);
		UnitType->Add(&BWAPI::UnitTypes::Special_Zerg_Flag_Beacon,        BroodWar::Api::Enum::UnitType::Special_Zerg_Flag_Beacon);
		UnitType->Add(&BWAPI::UnitTypes::Special_Terran_Flag_Beacon,      BroodWar::Api::Enum::UnitType::Special_Terran_Flag_Beacon);
		UnitType->Add(&BWAPI::UnitTypes::Special_Protoss_Flag_Beacon,     BroodWar::Api::Enum::UnitType::Special_Protoss_Flag_Beacon);
		UnitType->Add(&BWAPI::UnitTypes::Spell_Dark_Swarm,                BroodWar::Api::Enum::UnitType::Spell_Dark_Swarm);
		UnitType->Add(&BWAPI::UnitTypes::Powerup_Uraj_Crystal,            BroodWar::Api::Enum::UnitType::Powerup_Uraj_Crystal);
		UnitType->Add(&BWAPI::UnitTypes::Powerup_Khalis_Crystal,          BroodWar::Api::Enum::UnitType::Powerup_Khalis_Crystal);
		UnitType->Add(&BWAPI::UnitTypes::Powerup_Flag,                    BroodWar::Api::Enum::UnitType::Powerup_Flag);
		UnitType->Add(&BWAPI::UnitTypes::Powerup_Young_Chrysalis,         BroodWar::Api::Enum::UnitType::Powerup_Young_Chrysalis);
		UnitType->Add(&BWAPI::UnitTypes::Powerup_Psi_Emitter,             BroodWar::Api::Enum::UnitType::Powerup_Psi_Emitter);
		UnitType->Add(&BWAPI::UnitTypes::Powerup_Data_Disk,               BroodWar::Api::Enum::UnitType::Powerup_Data_Disk);
		UnitType->Add(&BWAPI::UnitTypes::Powerup_Khaydarin_Crystal,       BroodWar::Api::Enum::UnitType::Powerup_Khaydarin_Crystal);
		UnitType->Add(&BWAPI::UnitTypes::Powerup_Mineral_Cluster_Type_1,  BroodWar::Api::Enum::UnitType::Powerup_Mineral_Cluster_Type_1);
		UnitType->Add(&BWAPI::UnitTypes::Powerup_Mineral_Cluster_Type_2,  BroodWar::Api::Enum::UnitType::Powerup_Mineral_Cluster_Type_2);
		UnitType->Add(&BWAPI::UnitTypes::Powerup_Protoss_Gas_Orb_Type_1,  BroodWar::Api::Enum::UnitType::Powerup_Protoss_Gas_Orb_Type_1);
		UnitType->Add(&BWAPI::UnitTypes::Powerup_Protoss_Gas_Orb_Type_2,  BroodWar::Api::Enum::UnitType::Powerup_Protoss_Gas_Orb_Type_2);
		UnitType->Add(&BWAPI::UnitTypes::Powerup_Zerg_Gas_Sac_Type_1,     BroodWar::Api::Enum::UnitType::Powerup_Zerg_Gas_Sac_Type_1);
		UnitType->Add(&BWAPI::UnitTypes::Powerup_Zerg_Gas_Sac_Type_2,     BroodWar::Api::Enum::UnitType::Powerup_Zerg_Gas_Sac_Type_2);
		UnitType->Add(&BWAPI::UnitTypes::Powerup_Terran_Gas_Tank_Type_1,  BroodWar::Api::Enum::UnitType::Powerup_Terran_Gas_Tank_Type_1);
		UnitType->Add(&BWAPI::UnitTypes::Powerup_Terran_Gas_Tank_Type_2,  BroodWar::Api::Enum::UnitType::Powerup_Terran_Gas_Tank_Type_2);
		UnitType->Add(&BWAPI::UnitTypes::Special_Map_Revealer,            BroodWar::Api::Enum::UnitType::Special_Map_Revealer);
		UnitType->Add(&BWAPI::UnitTypes::Special_Floor_Missile_Trap,      BroodWar::Api::Enum::UnitType::Special_Floor_Missile_Trap);
		UnitType->Add(&BWAPI::UnitTypes::Special_Floor_Hatch,             BroodWar::Api::Enum::UnitType::Special_Floor_Hatch);
		UnitType->Add(&BWAPI::UnitTypes::Special_Upper_Level_Door,        BroodWar::Api::Enum::UnitType::Special_Upper_Level_Door);
		UnitType->Add(&BWAPI::UnitTypes::Special_Right_Upper_Level_Door,  BroodWar::Api::Enum::UnitType::Special_Right_Upper_Level_Door);
		UnitType->Add(&BWAPI::UnitTypes::Special_Pit_Door,                BroodWar::Api::Enum::UnitType::Special_Pit_Door);
		UnitType->Add(&BWAPI::UnitTypes::Special_Right_Pit_Door,          BroodWar::Api::Enum::UnitType::Special_Right_Pit_Door);
		UnitType->Add(&BWAPI::UnitTypes::Special_Floor_Gun_Trap,          BroodWar::Api::Enum::UnitType::Special_Floor_Gun_Trap);
		UnitType->Add(&BWAPI::UnitTypes::Special_Wall_Missile_Trap,       BroodWar::Api::Enum::UnitType::Special_Wall_Missile_Trap);
		UnitType->Add(&BWAPI::UnitTypes::Special_Wall_Flame_Trap,         BroodWar::Api::Enum::UnitType::Special_Wall_Flame_Trap);
		UnitType->Add(&BWAPI::UnitTypes::Special_Right_Wall_Missile_Trap, BroodWar::Api::Enum::UnitType::Special_Right_Wall_Missile_Trap);
		UnitType->Add(&BWAPI::UnitTypes::Special_Right_Wall_Flame_Trap,   BroodWar::Api::Enum::UnitType::Special_Right_Wall_Flame_Trap);
		UnitType->Add(&BWAPI::UnitTypes::Special_Start_Location,          BroodWar::Api::Enum::UnitType::Special_Start_Location);
		UnitType->Add(&BWAPI::UnitTypes::None,                            BroodWar::Api::Enum::UnitType::None);
		UnitType->Add(&BWAPI::UnitTypes::AllUnits,                        BroodWar::Api::Enum::UnitType::AllUnits);
		UnitType->Add(&BWAPI::UnitTypes::Men,                             BroodWar::Api::Enum::UnitType::Men);
		UnitType->Add(&BWAPI::UnitTypes::Buildings,                       BroodWar::Api::Enum::UnitType::Buildings);
		UnitType->Add(&BWAPI::UnitTypes::Factories,                       BroodWar::Api::Enum::UnitType::Factories);
		UnitType->Add(&BWAPI::UnitTypes::Unknown,                         BroodWar::Api::Enum::UnitType::Unknown);
		#pragma endregion

		#pragma region OrderType
		OrderType = gcnew EnumClassMap<BWAPI::Order, BroodWar::Api::Enum::OrderType>(157);
		OrderType->Add(&BWAPI::Orders::Die,                    BroodWar::Api::Enum::OrderType::Die);
		OrderType->Add(&BWAPI::Orders::Stop,                   BroodWar::Api::Enum::OrderType::Stop);
		OrderType->Add(&BWAPI::Orders::Guard,                  BroodWar::Api::Enum::OrderType::Guard);
		OrderType->Add(&BWAPI::Orders::PlayerGuard,            BroodWar::Api::Enum::OrderType::PlayerGuard);
		OrderType->Add(&BWAPI::Orders::TurretGuard,            BroodWar::Api::Enum::OrderType::TurretGuard);
		OrderType->Add(&BWAPI::Orders::BunkerGuard,            BroodWar::Api::Enum::OrderType::BunkerGuard);
		OrderType->Add(&BWAPI::Orders::Move,                   BroodWar::Api::Enum::OrderType::Move);
		OrderType->Add(&BWAPI::Orders::AttackUnit,             BroodWar::Api::Enum::OrderType::AttackUnit);
		OrderType->Add(&BWAPI::Orders::AttackTile,             BroodWar::Api::Enum::OrderType::AttackTile);
		OrderType->Add(&BWAPI::Orders::Hover,                  BroodWar::Api::Enum::OrderType::Hover);
		OrderType->Add(&BWAPI::Orders::AttackMove,             BroodWar::Api::Enum::OrderType::AttackMove);
		OrderType->Add(&BWAPI::Orders::InfestedCommandCenter,  BroodWar::Api::Enum::OrderType::InfestedCommandCenter);
		OrderType->Add(&BWAPI::Orders::UnusedNothing,          BroodWar::Api::Enum::OrderType::UnusedNothing);
		OrderType->Add(&BWAPI::Orders::UnusedPowerup,          BroodWar::Api::Enum::OrderType::UnusedPowerup);
		OrderType->Add(&BWAPI::Orders::TowerGuard,             BroodWar::Api::Enum::OrderType::TowerGuard);
		OrderType->Add(&BWAPI::Orders::VultureMine,            BroodWar::Api::Enum::OrderType::VultureMine);
		OrderType->Add(&BWAPI::Orders::Nothing,                BroodWar::Api::Enum::OrderType::Nothing);
		OrderType->Add(&BWAPI::Orders::Nothing3,               BroodWar::Api::Enum::OrderType::Nothing3);
		OrderType->Add(&BWAPI::Orders::CastInfestation,        BroodWar::Api::Enum::OrderType::CastInfestation);
		OrderType->Add(&BWAPI::Orders::InfestingCommandCenter, BroodWar::Api::Enum::OrderType::InfestingCommandCenter);
		OrderType->Add(&BWAPI::Orders::PlaceBuilding,          BroodWar::Api::Enum::OrderType::PlaceBuilding);
		OrderType->Add(&BWAPI::Orders::BuildProtoss2,          BroodWar::Api::Enum::OrderType::BuildProtoss2);
		OrderType->Add(&BWAPI::Orders::ConstructingBuilding,   BroodWar::Api::Enum::OrderType::ConstructingBuilding);
		OrderType->Add(&BWAPI::Orders::Repair,                 BroodWar::Api::Enum::OrderType::Repair);
		OrderType->Add(&BWAPI::Orders::PlaceAddon,             BroodWar::Api::Enum::OrderType::PlaceAddon);
		OrderType->Add(&BWAPI::Orders::BuildAddon,             BroodWar::Api::Enum::OrderType::BuildAddon);
		OrderType->Add(&BWAPI::Orders::Train,                  BroodWar::Api::Enum::OrderType::Train);
		OrderType->Add(&BWAPI::Orders::RallyPointUnit,         BroodWar::Api::Enum::OrderType::RallyPointUnit);
		OrderType->Add(&BWAPI::Orders::RallyPointTile,         BroodWar::Api::Enum::OrderType::RallyPointTile);
		OrderType->Add(&BWAPI::Orders::ZergBirth,              BroodWar::Api::Enum::OrderType::ZergBirth);
		OrderType->Add(&BWAPI::Orders::ZergUnitMorph,          BroodWar::Api::Enum::OrderType::ZergUnitMorph);
		OrderType->Add(&BWAPI::Orders::ZergBuildingMorph,      BroodWar::Api::Enum::OrderType::ZergBuildingMorph);
		OrderType->Add(&BWAPI::Orders::IncompleteBuilding,     BroodWar::Api::Enum::OrderType::IncompleteBuilding);
		OrderType->Add(&BWAPI::Orders::BuildNydusExit,         BroodWar::Api::Enum::OrderType::BuildNydusExit);
		OrderType->Add(&BWAPI::Orders::EnterNydusCanal,        BroodWar::Api::Enum::OrderType::EnterNydusCanal);
		OrderType->Add(&BWAPI::Orders::Follow,                 BroodWar::Api::Enum::OrderType::Follow);
		OrderType->Add(&BWAPI::Orders::Carrier,                BroodWar::Api::Enum::OrderType::Carrier);
		OrderType->Add(&BWAPI::Orders::ReaverCarrierMove,      BroodWar::Api::Enum::OrderType::ReaverCarrierMove);
		OrderType->Add(&BWAPI::Orders::CarrierIgnore2,         BroodWar::Api::Enum::OrderType::CarrierIgnore2);
		OrderType->Add(&BWAPI::Orders::Reaver,                 BroodWar::Api::Enum::OrderType::Reaver);
		OrderType->Add(&BWAPI::Orders::TrainFighter,           BroodWar::Api::Enum::OrderType::TrainFighter);
		OrderType->Add(&BWAPI::Orders::InterceptorAttack,      BroodWar::Api::Enum::OrderType::InterceptorAttack);
		OrderType->Add(&BWAPI::Orders::ScarabAttack,           BroodWar::Api::Enum::OrderType::ScarabAttack);
		OrderType->Add(&BWAPI::Orders::RechargeShieldsUnit,    BroodWar::Api::Enum::OrderType::RechargeShieldsUnit);
		OrderType->Add(&BWAPI::Orders::RechargeShieldsBattery, BroodWar::Api::Enum::OrderType::RechargeShieldsBattery);
		OrderType->Add(&BWAPI::Orders::ShieldBattery,          BroodWar::Api::Enum::OrderType::ShieldBattery);
		OrderType->Add(&BWAPI::Orders::InterceptorReturn,      BroodWar::Api::Enum::OrderType::InterceptorReturn);
		OrderType->Add(&BWAPI::Orders::BuildingLand,           BroodWar::Api::Enum::OrderType::BuildingLand);
		OrderType->Add(&BWAPI::Orders::BuildingLiftOff,        BroodWar::Api::Enum::OrderType::BuildingLiftOff);
		OrderType->Add(&BWAPI::Orders::DroneLiftOff,           BroodWar::Api::Enum::OrderType::DroneLiftOff);
		OrderType->Add(&BWAPI::Orders::LiftingOff,             BroodWar::Api::Enum::OrderType::LiftingOff);
		OrderType->Add(&BWAPI::Orders::ResearchTech,           BroodWar::Api::Enum::OrderType::ResearchTech);
		OrderType->Add(&BWAPI::Orders::Upgrade,                BroodWar::Api::Enum::OrderType::Upgrade);
		OrderType->Add(&BWAPI::Orders::Larva,                  BroodWar::Api::Enum::OrderType::Larva);
		OrderType->Add(&BWAPI::Orders::SpawningLarva,          BroodWar::Api::Enum::OrderType::SpawningLarva);
		OrderType->Add(&BWAPI::Orders::Harvest1,               BroodWar::Api::Enum::OrderType::Harvest1);
		OrderType->Add(&BWAPI::Orders::Harvest2,               BroodWar::Api::Enum::OrderType::Harvest2);
		OrderType->Add(&BWAPI::Orders::MoveToGas,              BroodWar::Api::Enum::OrderType::MoveToGas);
		OrderType->Add(&BWAPI::Orders::WaitForGas,             BroodWar::Api::Enum::OrderType::WaitForGas);
		OrderType->Add(&BWAPI::Orders::HarvestGas,             BroodWar::Api::Enum::OrderType::HarvestGas);
		OrderType->Add(&BWAPI::Orders::ReturnGas,              BroodWar::Api::Enum::OrderType::ReturnGas);
		OrderType->Add(&BWAPI::Orders::MoveToMinerals,         BroodWar::Api::Enum::OrderType::MoveToMinerals);
		OrderType->Add(&BWAPI::Orders::WaitForMinerals,        BroodWar::Api::Enum::OrderType::WaitForMinerals);
		OrderType->Add(&BWAPI::Orders::MiningMinerals,         BroodWar::Api::Enum::OrderType::MiningMinerals);
		OrderType->Add(&BWAPI::Orders::Harvest3,               BroodWar::Api::Enum::OrderType::Harvest3);
		OrderType->Add(&BWAPI::Orders::Harvest4,               BroodWar::Api::Enum::OrderType::Harvest4);
		OrderType->Add(&BWAPI::Orders::ReturnMinerals,         BroodWar::Api::Enum::OrderType::ReturnMinerals);
		OrderType->Add(&BWAPI::Orders::Interrupted,            BroodWar::Api::Enum::OrderType::Interrupted);
		OrderType->Add(&BWAPI::Orders::EnterTransport,         BroodWar::Api::Enum::OrderType::EnterTransport);
		OrderType->Add(&BWAPI::Orders::PickupIdle,             BroodWar::Api::Enum::OrderType::PickupIdle);
		OrderType->Add(&BWAPI::Orders::PickupTransport,        BroodWar::Api::Enum::OrderType::PickupTransport);
		OrderType->Add(&BWAPI::Orders::PickupBunker,           BroodWar::Api::Enum::OrderType::PickupBunker);
		OrderType->Add(&BWAPI::Orders::Pickup4,                BroodWar::Api::Enum::OrderType::Pickup4);
		OrderType->Add(&BWAPI::Orders::PowerupIdle,            BroodWar::Api::Enum::OrderType::PowerupIdle);
		OrderType->Add(&BWAPI::Orders::Sieging,                BroodWar::Api::Enum::OrderType::Sieging);
		OrderType->Add(&BWAPI::Orders::Unsieging,              BroodWar::Api::Enum::OrderType::Unsieging);
		OrderType->Add(&BWAPI::Orders::InitCreepGrowth,        BroodWar::Api::Enum::OrderType::InitCreepGrowth);
		OrderType->Add(&BWAPI::Orders::SpreadCreep,            BroodWar::Api::Enum::OrderType::SpreadCreep);
		OrderType->Add(&BWAPI::Orders::StoppingCreepGrowth,    BroodWar::Api::Enum::OrderType::StoppingCreepGrowth);
		OrderType->Add(&BWAPI::Orders::GuardianAspect,         BroodWar::Api::Enum::OrderType::GuardianAspect);
		OrderType->Add(&BWAPI::Orders::ArchonWarp,             BroodWar::Api::Enum::OrderType::ArchonWarp);
		OrderType->Add(&BWAPI::Orders::CompletingArchonsummon, BroodWar::Api::Enum::OrderType::CompletingArchonsummon);
		OrderType->Add(&BWAPI::Orders::HoldPosition,           BroodWar::Api::Enum::OrderType::HoldPosition);
		OrderType->Add(&BWAPI::Orders::Cloak,                  BroodWar::Api::Enum::OrderType::Cloak);
		OrderType->Add(&BWAPI::Orders::Decloak,                BroodWar::Api::Enum::OrderType::Decloak);
		OrderType->Add(&BWAPI::Orders::Unload,                 BroodWar::Api::Enum::OrderType::Unload);
		OrderType->Add(&BWAPI::Orders::MoveUnload,             BroodWar::Api::Enum::OrderType::MoveUnload);
		OrderType->Add(&BWAPI::Orders::FireYamatoGun,          BroodWar::Api::Enum::OrderType::FireYamatoGun);
		OrderType->Add(&BWAPI::Orders::CastLockdown,           BroodWar::Api::Enum::OrderType::CastLockdown);
		OrderType->Add(&BWAPI::Orders::Burrowing,              BroodWar::Api::Enum::OrderType::Burrowing);
		OrderType->Add(&BWAPI::Orders::Burrowed,               BroodWar::Api::Enum::OrderType::Burrowed);
		OrderType->Add(&BWAPI::Orders::Unburrowing,            BroodWar::Api::Enum::OrderType::Unburrowing);
		OrderType->Add(&BWAPI::Orders::CastDarkSwarm,          BroodWar::Api::Enum::OrderType::CastDarkSwarm);
		OrderType->Add(&BWAPI::Orders::CastParasite,           BroodWar::Api::Enum::OrderType::CastParasite);
		OrderType->Add(&BWAPI::Orders::CastSpawnBroodlings,    BroodWar::Api::Enum::OrderType::CastSpawnBroodlings);
		OrderType->Add(&BWAPI::Orders::CastEMPShockwave,       BroodWar::Api::Enum::OrderType::CastEmpShockwave);
		OrderType->Add(&BWAPI::Orders::NukeWait,               BroodWar::Api::Enum::OrderType::NukeWait);
		OrderType->Add(&BWAPI::Orders::NukeTrain,              BroodWar::Api::Enum::OrderType::NukeTrain);
		OrderType->Add(&BWAPI::Orders::NukeLaunch,             BroodWar::Api::Enum::OrderType::NukeLaunch);
		OrderType->Add(&BWAPI::Orders::NukePaint,              BroodWar::Api::Enum::OrderType::NukePaint);
		OrderType->Add(&BWAPI::Orders::NukeUnit,               BroodWar::Api::Enum::OrderType::NukeUnit);
		OrderType->Add(&BWAPI::Orders::CastNuclearStrike,      BroodWar::Api::Enum::OrderType::CastNuclearStrike);
		OrderType->Add(&BWAPI::Orders::NukeTrack,              BroodWar::Api::Enum::OrderType::NukeTrack);
		OrderType->Add(&BWAPI::Orders::CloakNearbyUnits,       BroodWar::Api::Enum::OrderType::CloakNearbyUnits);
		OrderType->Add(&BWAPI::Orders::PlaceMine,              BroodWar::Api::Enum::OrderType::PlaceMine);
		OrderType->Add(&BWAPI::Orders::RightClickAction,       BroodWar::Api::Enum::OrderType::RightClickAction);
		OrderType->Add(&BWAPI::Orders::CastRecall,             BroodWar::Api::Enum::OrderType::CastRecall);
		OrderType->Add(&BWAPI::Orders::TeleporttoLocation,     BroodWar::Api::Enum::OrderType::TeleporttoLocation);
		OrderType->Add(&BWAPI::Orders::CastScannerSweep,       BroodWar::Api::Enum::OrderType::CastScannerSweep);
		OrderType->Add(&BWAPI::Orders::Scanner,                BroodWar::Api::Enum::OrderType::Scanner);
		OrderType->Add(&BWAPI::Orders::CastDefensiveMatrix,    BroodWar::Api::Enum::OrderType::CastDefensiveMatrix);
		OrderType->Add(&BWAPI::Orders::CastPsionicStorm,       BroodWar::Api::Enum::OrderType::CastPsionicStorm);
		OrderType->Add(&BWAPI::Orders::CastIrradiate,          BroodWar::Api::Enum::OrderType::CastIrradiate);
		OrderType->Add(&BWAPI::Orders::CastPlague,             BroodWar::Api::Enum::OrderType::CastPlague);
		OrderType->Add(&BWAPI::Orders::CastConsume,            BroodWar::Api::Enum::OrderType::CastConsume);
		OrderType->Add(&BWAPI::Orders::CastEnsnare,            BroodWar::Api::Enum::OrderType::CastEnsnare);
		OrderType->Add(&BWAPI::Orders::CastStasisField,        BroodWar::Api::Enum::OrderType::CastStasisField);
		OrderType->Add(&BWAPI::Orders::CastHallucination,      BroodWar::Api::Enum::OrderType::CastHallucination);
		OrderType->Add(&BWAPI::Orders::Hallucination2,         BroodWar::Api::Enum::OrderType::Hallucination2);
		OrderType->Add(&BWAPI::Orders::ResetCollision,         BroodWar::Api::Enum::OrderType::ResetCollision);
		OrderType->Add(&BWAPI::Orders::Patrol,                 BroodWar::Api::Enum::OrderType::Patrol);
		OrderType->Add(&BWAPI::Orders::CTFCOPInit,             BroodWar::Api::Enum::OrderType::CtfcopInit);
		OrderType->Add(&BWAPI::Orders::CTFCOPStarted,          BroodWar::Api::Enum::OrderType::CtfcopStarted);
		OrderType->Add(&BWAPI::Orders::CTFCOP2,                BroodWar::Api::Enum::OrderType::Ctfcop2);
		OrderType->Add(&BWAPI::Orders::ComputerAI,             BroodWar::Api::Enum::OrderType::ComputerAi);
		OrderType->Add(&BWAPI::Orders::AtkMoveEP,              BroodWar::Api::Enum::OrderType::AtkMoveEp);
		OrderType->Add(&BWAPI::Orders::HarassMove,             BroodWar::Api::Enum::OrderType::HarassMove);
		OrderType->Add(&BWAPI::Orders::AIPatrol,               BroodWar::Api::Enum::OrderType::AiPatrol);
		OrderType->Add(&BWAPI::Orders::GuardPost,              BroodWar::Api::Enum::OrderType::GuardPost);
		OrderType->Add(&BWAPI::Orders::RescuePassive,          BroodWar::Api::Enum::OrderType::RescuePassive);
		OrderType->Add(&BWAPI::Orders::Neutral,                BroodWar::Api::Enum::OrderType::Neutral);
		OrderType->Add(&BWAPI::Orders::ComputerReturn,         BroodWar::Api::Enum::OrderType::ComputerReturn);
		OrderType->Add(&BWAPI::Orders::SelfDestrucing,         BroodWar::Api::Enum::OrderType::SelfDestrucing);
		OrderType->Add(&BWAPI::Orders::Critter,                BroodWar::Api::Enum::OrderType::Critter);
		OrderType->Add(&BWAPI::Orders::HiddenGun,              BroodWar::Api::Enum::OrderType::HiddenGun);
		OrderType->Add(&BWAPI::Orders::OpenDoor,               BroodWar::Api::Enum::OrderType::OpenDoor);
		OrderType->Add(&BWAPI::Orders::CloseDoor,              BroodWar::Api::Enum::OrderType::CloseDoor);
		OrderType->Add(&BWAPI::Orders::HideTrap,               BroodWar::Api::Enum::OrderType::HideTrap);
		OrderType->Add(&BWAPI::Orders::RevealTrap,             BroodWar::Api::Enum::OrderType::RevealTrap);
		OrderType->Add(&BWAPI::Orders::Enabledoodad,           BroodWar::Api::Enum::OrderType::Enabledoodad);
		OrderType->Add(&BWAPI::Orders::Disabledoodad,          BroodWar::Api::Enum::OrderType::Disabledoodad);
		OrderType->Add(&BWAPI::Orders::Warpin,                 BroodWar::Api::Enum::OrderType::Warpin);
		OrderType->Add(&BWAPI::Orders::Medic,                  BroodWar::Api::Enum::OrderType::Medic);
		OrderType->Add(&BWAPI::Orders::MedicHeal1,             BroodWar::Api::Enum::OrderType::MedicHeal1);
		OrderType->Add(&BWAPI::Orders::HealMove,               BroodWar::Api::Enum::OrderType::HealMove);
		OrderType->Add(&BWAPI::Orders::MedicHeal2,             BroodWar::Api::Enum::OrderType::MedicHeal2);
		OrderType->Add(&BWAPI::Orders::CastRestoration,        BroodWar::Api::Enum::OrderType::CastRestoration);
		OrderType->Add(&BWAPI::Orders::CastDisruptionWeb,      BroodWar::Api::Enum::OrderType::CastDisruptionWeb);
		OrderType->Add(&BWAPI::Orders::CastMindControl,        BroodWar::Api::Enum::OrderType::CastMindControl);
		OrderType->Add(&BWAPI::Orders::DarkArchonMeld,         BroodWar::Api::Enum::OrderType::DarkArchonMeld);
		OrderType->Add(&BWAPI::Orders::CastFeedback,           BroodWar::Api::Enum::OrderType::CastFeedback);
		OrderType->Add(&BWAPI::Orders::CastOpticalFlare,       BroodWar::Api::Enum::OrderType::CastOpticalFlare);
		OrderType->Add(&BWAPI::Orders::CastMaelstrom,          BroodWar::Api::Enum::OrderType::CastMaelstrom);
		OrderType->Add(&BWAPI::Orders::JunkYardDog,            BroodWar::Api::Enum::OrderType::JunkYardDog);
		OrderType->Add(&BWAPI::Orders::Fatal,                  BroodWar::Api::Enum::OrderType::Fatal);
		OrderType->Add(&BWAPI::Orders::None,                   BroodWar::Api::Enum::OrderType::None);
		OrderType->Add(&BWAPI::Orders::Unknown,                BroodWar::Api::Enum::OrderType::Unknown);
		#pragma endregion

		#pragma region UnitSizeType
		UnitSizeType = gcnew EnumClassMap<BWAPI::UnitSizeType, BroodWar::Api::Enum::UnitSizeType>(6);
		UnitSizeType->Add(&BWAPI::UnitSizeTypes::Independent, BroodWar::Api::Enum::UnitSizeType::Independent);
		UnitSizeType->Add(&BWAPI::UnitSizeTypes::Small,       BroodWar::Api::Enum::UnitSizeType::Small);
		UnitSizeType->Add(&BWAPI::UnitSizeTypes::Medium,      BroodWar::Api::Enum::UnitSizeType::Medium);
		UnitSizeType->Add(&BWAPI::UnitSizeTypes::Large,       BroodWar::Api::Enum::UnitSizeType::Large);
		UnitSizeType->Add(&BWAPI::UnitSizeTypes::None,        BroodWar::Api::Enum::UnitSizeType::None);
		UnitSizeType->Add(&BWAPI::UnitSizeTypes::Unknown,     BroodWar::Api::Enum::UnitSizeType::Unknown);
		#pragma endregion

		#pragma region UnitCommandType
		UnitCommandType = gcnew EnumClassMap<BWAPI::UnitCommandType, BroodWar::Api::Enum::UnitCommandType>(46);
		UnitCommandType->Add(&BWAPI::UnitCommandTypes::Attack_Move,          BroodWar::Api::Enum::UnitCommandType::AttackMove);
		UnitCommandType->Add(&BWAPI::UnitCommandTypes::Attack_Unit,          BroodWar::Api::Enum::UnitCommandType::AttackUnit);
		UnitCommandType->Add(&BWAPI::UnitCommandTypes::Build,                BroodWar::Api::Enum::UnitCommandType::Build);
		UnitCommandType->Add(&BWAPI::UnitCommandTypes::Build_Addon,          BroodWar::Api::Enum::UnitCommandType::BuildAddon);
		UnitCommandType->Add(&BWAPI::UnitCommandTypes::Train,                BroodWar::Api::Enum::UnitCommandType::Train);
		UnitCommandType->Add(&BWAPI::UnitCommandTypes::Morph,                BroodWar::Api::Enum::UnitCommandType::Morph);
		UnitCommandType->Add(&BWAPI::UnitCommandTypes::Research,             BroodWar::Api::Enum::UnitCommandType::Research);
		UnitCommandType->Add(&BWAPI::UnitCommandTypes::Upgrade,              BroodWar::Api::Enum::UnitCommandType::Upgrade);
		UnitCommandType->Add(&BWAPI::UnitCommandTypes::Set_Rally_Position,   BroodWar::Api::Enum::UnitCommandType::SetRallyPosition);
		UnitCommandType->Add(&BWAPI::UnitCommandTypes::Set_Rally_Unit,       BroodWar::Api::Enum::UnitCommandType::SetRallyUnit);
		UnitCommandType->Add(&BWAPI::UnitCommandTypes::Move,                 BroodWar::Api::Enum::UnitCommandType::Move);
		UnitCommandType->Add(&BWAPI::UnitCommandTypes::Patrol,               BroodWar::Api::Enum::UnitCommandType::Patrol);
		UnitCommandType->Add(&BWAPI::UnitCommandTypes::Hold_Position,        BroodWar::Api::Enum::UnitCommandType::HoldPosition);
		UnitCommandType->Add(&BWAPI::UnitCommandTypes::Stop,                 BroodWar::Api::Enum::UnitCommandType::Stop);
		UnitCommandType->Add(&BWAPI::UnitCommandTypes::Follow,               BroodWar::Api::Enum::UnitCommandType::Follow);
		UnitCommandType->Add(&BWAPI::UnitCommandTypes::Gather,               BroodWar::Api::Enum::UnitCommandType::Gather);
		UnitCommandType->Add(&BWAPI::UnitCommandTypes::Return_Cargo,         BroodWar::Api::Enum::UnitCommandType::ReturnCargo);
		UnitCommandType->Add(&BWAPI::UnitCommandTypes::Repair,               BroodWar::Api::Enum::UnitCommandType::Repair);
		UnitCommandType->Add(&BWAPI::UnitCommandTypes::Burrow,               BroodWar::Api::Enum::UnitCommandType::Burrow);
		UnitCommandType->Add(&BWAPI::UnitCommandTypes::Unburrow,             BroodWar::Api::Enum::UnitCommandType::Unburrow);
		UnitCommandType->Add(&BWAPI::UnitCommandTypes::Cloak,                BroodWar::Api::Enum::UnitCommandType::Cloak);
		UnitCommandType->Add(&BWAPI::UnitCommandTypes::Decloak,              BroodWar::Api::Enum::UnitCommandType::Decloak);
		UnitCommandType->Add(&BWAPI::UnitCommandTypes::Siege,                BroodWar::Api::Enum::UnitCommandType::Siege);
		UnitCommandType->Add(&BWAPI::UnitCommandTypes::Unsiege,              BroodWar::Api::Enum::UnitCommandType::Unsiege);
		UnitCommandType->Add(&BWAPI::UnitCommandTypes::Lift,                 BroodWar::Api::Enum::UnitCommandType::Lift);
		UnitCommandType->Add(&BWAPI::UnitCommandTypes::Land,                 BroodWar::Api::Enum::UnitCommandType::Land);
		UnitCommandType->Add(&BWAPI::UnitCommandTypes::Load,                 BroodWar::Api::Enum::UnitCommandType::Load);
		UnitCommandType->Add(&BWAPI::UnitCommandTypes::Unload,               BroodWar::Api::Enum::UnitCommandType::Unload);
		UnitCommandType->Add(&BWAPI::UnitCommandTypes::Unload_All,           BroodWar::Api::Enum::UnitCommandType::UnloadAll);
		UnitCommandType->Add(&BWAPI::UnitCommandTypes::Unload_All_Position,  BroodWar::Api::Enum::UnitCommandType::UnloadAllPosition);
		UnitCommandType->Add(&BWAPI::UnitCommandTypes::Right_Click_Position, BroodWar::Api::Enum::UnitCommandType::RightClickPosition);
		UnitCommandType->Add(&BWAPI::UnitCommandTypes::Right_Click_Unit,     BroodWar::Api::Enum::UnitCommandType::RightClickUnit);
		UnitCommandType->Add(&BWAPI::UnitCommandTypes::Halt_Construction,    BroodWar::Api::Enum::UnitCommandType::HaltConstruction);
		UnitCommandType->Add(&BWAPI::UnitCommandTypes::Cancel_Construction,  BroodWar::Api::Enum::UnitCommandType::CancelConstruction);
		UnitCommandType->Add(&BWAPI::UnitCommandTypes::Cancel_Addon,         BroodWar::Api::Enum::UnitCommandType::CancelAddon);
		UnitCommandType->Add(&BWAPI::UnitCommandTypes::Cancel_Train,         BroodWar::Api::Enum::UnitCommandType::CancelTrain);
		UnitCommandType->Add(&BWAPI::UnitCommandTypes::Cancel_Train_Slot,    BroodWar::Api::Enum::UnitCommandType::CancelTrainSlot);
		UnitCommandType->Add(&BWAPI::UnitCommandTypes::Cancel_Morph,         BroodWar::Api::Enum::UnitCommandType::CancelMorph);
		UnitCommandType->Add(&BWAPI::UnitCommandTypes::Cancel_Research,      BroodWar::Api::Enum::UnitCommandType::CancelResearch);
		UnitCommandType->Add(&BWAPI::UnitCommandTypes::Cancel_Upgrade,       BroodWar::Api::Enum::UnitCommandType::CancelUpgrade);
		UnitCommandType->Add(&BWAPI::UnitCommandTypes::Use_Tech,             BroodWar::Api::Enum::UnitCommandType::UseTech);
		UnitCommandType->Add(&BWAPI::UnitCommandTypes::Use_Tech_Position,    BroodWar::Api::Enum::UnitCommandType::UseTechPosition);
		UnitCommandType->Add(&BWAPI::UnitCommandTypes::Use_Tech_Unit,        BroodWar::Api::Enum::UnitCommandType::UseTechUnit);
		UnitCommandType->Add(&BWAPI::UnitCommandTypes::Place_COP,            BroodWar::Api::Enum::UnitCommandType::PlaceCop);
		UnitCommandType->Add(&BWAPI::UnitCommandTypes::None,                 BroodWar::Api::Enum::UnitCommandType::None);
		UnitCommandType->Add(&BWAPI::UnitCommandTypes::Unknown,              BroodWar::Api::Enum::UnitCommandType::Unknown);
		#pragma endregion

		#pragma region GameType
		GameType = gcnew EnumClassMap<BWAPI::GameType, BroodWar::Api::Enum::GameType>(16);
		GameType->Add(&BWAPI::GameTypes::Melee,                 BroodWar::Api::Enum::GameType::Melee);
		GameType->Add(&BWAPI::GameTypes::Free_For_All,          BroodWar::Api::Enum::GameType::FreeForAll);
		GameType->Add(&BWAPI::GameTypes::One_on_One,            BroodWar::Api::Enum::GameType::OneOnOne);
		GameType->Add(&BWAPI::GameTypes::Capture_The_Flag,      BroodWar::Api::Enum::GameType::CaptureTheFlag);
		GameType->Add(&BWAPI::GameTypes::Greed,                 BroodWar::Api::Enum::GameType::Greed);
		GameType->Add(&BWAPI::GameTypes::Slaughter,             BroodWar::Api::Enum::GameType::Slaughter);
		GameType->Add(&BWAPI::GameTypes::Sudden_Death,          BroodWar::Api::Enum::GameType::SuddenDeath);
		GameType->Add(&BWAPI::GameTypes::Ladder,                BroodWar::Api::Enum::GameType::Ladder);
		GameType->Add(&BWAPI::GameTypes::Use_Map_Settings,      BroodWar::Api::Enum::GameType::UseMapSettings);
		GameType->Add(&BWAPI::GameTypes::Team_Melee,            BroodWar::Api::Enum::GameType::TeamMelee);
		GameType->Add(&BWAPI::GameTypes::Team_Free_For_All,     BroodWar::Api::Enum::GameType::TeamFreeForAll);
		GameType->Add(&BWAPI::GameTypes::Team_Capture_The_Flag, BroodWar::Api::Enum::GameType::TeamCaptureTheFlag);
		GameType->Add(&BWAPI::GameTypes::Top_vs_Bottom,         BroodWar::Api::Enum::GameType::TopVsBottom);
		GameType->Add(&BWAPI::GameTypes::Pro_Gamer_League,      BroodWar::Api::Enum::GameType::ProGamerLeague);
		GameType->Add(&BWAPI::GameTypes::None,                  BroodWar::Api::Enum::GameType::None);
		GameType->Add(&BWAPI::GameTypes::Unknown,               BroodWar::Api::Enum::GameType::Unknown);
		#pragma endregion

		#pragma region ErrorType
		ErrorType = gcnew EnumClassMap<BWAPI::Error, BroodWar::Api::Enum::ErrorType>(28);
		ErrorType->Add(&BWAPI::Errors::Unit_Does_Not_Exist,   BroodWar::Api::Enum::ErrorType::UnitDoesNotExist);
		ErrorType->Add(&BWAPI::Errors::Unit_Not_Visible,      BroodWar::Api::Enum::ErrorType::UnitNotVisible);
		ErrorType->Add(&BWAPI::Errors::Unit_Not_Owned,        BroodWar::Api::Enum::ErrorType::UnitNotOwned);
		ErrorType->Add(&BWAPI::Errors::Unit_Busy,             BroodWar::Api::Enum::ErrorType::UnitBusy);
		ErrorType->Add(&BWAPI::Errors::Incompatible_UnitType, BroodWar::Api::Enum::ErrorType::IncompatibleUnitType);
		ErrorType->Add(&BWAPI::Errors::Incompatible_TechType, BroodWar::Api::Enum::ErrorType::IncompatibleTechType);
		ErrorType->Add(&BWAPI::Errors::Incompatible_State,    BroodWar::Api::Enum::ErrorType::IncompatibleState);
		ErrorType->Add(&BWAPI::Errors::Already_Researched,    BroodWar::Api::Enum::ErrorType::AlreadyResearched);
		ErrorType->Add(&BWAPI::Errors::Fully_Upgraded,        BroodWar::Api::Enum::ErrorType::FullyUpgraded);
		ErrorType->Add(&BWAPI::Errors::Currently_Researching, BroodWar::Api::Enum::ErrorType::CurrentlyResearching);
		ErrorType->Add(&BWAPI::Errors::Currently_Upgrading,   BroodWar::Api::Enum::ErrorType::CurrentlyUpgrading);
		ErrorType->Add(&BWAPI::Errors::Insufficient_Minerals, BroodWar::Api::Enum::ErrorType::InsufficientMinerals);
		ErrorType->Add(&BWAPI::Errors::Insufficient_Gas,      BroodWar::Api::Enum::ErrorType::InsufficientGas);
		ErrorType->Add(&BWAPI::Errors::Insufficient_Supply,   BroodWar::Api::Enum::ErrorType::InsufficientSupply);
		ErrorType->Add(&BWAPI::Errors::Insufficient_Energy,   BroodWar::Api::Enum::ErrorType::InsufficientEnergy);
		ErrorType->Add(&BWAPI::Errors::Insufficient_Tech,     BroodWar::Api::Enum::ErrorType::InsufficientTech);
		ErrorType->Add(&BWAPI::Errors::Insufficient_Ammo,     BroodWar::Api::Enum::ErrorType::InsufficientAmmo);
		ErrorType->Add(&BWAPI::Errors::Insufficient_Space,    BroodWar::Api::Enum::ErrorType::InsufficientSpace);
		ErrorType->Add(&BWAPI::Errors::Invalid_Tile_Position, BroodWar::Api::Enum::ErrorType::InvalidTilePosition);
		ErrorType->Add(&BWAPI::Errors::Unbuildable_Location,  BroodWar::Api::Enum::ErrorType::UnbuildableLocation);
		ErrorType->Add(&BWAPI::Errors::Unreachable_Location,  BroodWar::Api::Enum::ErrorType::UnreachableLocation);
		ErrorType->Add(&BWAPI::Errors::Out_Of_Range,          BroodWar::Api::Enum::ErrorType::OutOfRange);
		ErrorType->Add(&BWAPI::Errors::Unable_To_Hit,         BroodWar::Api::Enum::ErrorType::UnableToHit);
		ErrorType->Add(&BWAPI::Errors::Access_Denied,         BroodWar::Api::Enum::ErrorType::AccessDenied);
		ErrorType->Add(&BWAPI::Errors::File_Not_Found,        BroodWar::Api::Enum::ErrorType::FileNotFound);
		ErrorType->Add(&BWAPI::Errors::Invalid_Parameter,     BroodWar::Api::Enum::ErrorType::InvalidParameter);
		ErrorType->Add(&BWAPI::Errors::None,                  BroodWar::Api::Enum::ErrorType::None);
		ErrorType->Add(&BWAPI::Errors::Unknown,               BroodWar::Api::Enum::ErrorType::Unknown);
		#pragma endregion

		#pragma region BulletType
		BulletType = gcnew EnumClassMap<BWAPI::BulletType, BroodWar::Api::Enum::BulletType>(37);
		BulletType->Add(&BWAPI::BulletTypes::Melee,                    BroodWar::Api::Enum::BulletType::Melee);
		BulletType->Add(&BWAPI::BulletTypes::Fusion_Cutter_Hit,        BroodWar::Api::Enum::BulletType::FusionCutterHit);
		BulletType->Add(&BWAPI::BulletTypes::Gauss_Rifle_Hit,          BroodWar::Api::Enum::BulletType::GaussRifleHit);
		BulletType->Add(&BWAPI::BulletTypes::C_10_Canister_Rifle_Hit,  BroodWar::Api::Enum::BulletType::C10CanisterRifleHit);
		BulletType->Add(&BWAPI::BulletTypes::Gemini_Missiles,          BroodWar::Api::Enum::BulletType::GeminiMissiles);
		BulletType->Add(&BWAPI::BulletTypes::Fragmentation_Grenade,    BroodWar::Api::Enum::BulletType::FragmentationGrenade);
		BulletType->Add(&BWAPI::BulletTypes::Longbolt_Missile,         BroodWar::Api::Enum::BulletType::LongboltMissile);
		BulletType->Add(&BWAPI::BulletTypes::ATS_ATA_Laser_Battery,    BroodWar::Api::Enum::BulletType::AtsAtaLaserBattery);
		BulletType->Add(&BWAPI::BulletTypes::Burst_Lasers,             BroodWar::Api::Enum::BulletType::BurstLasers);
		BulletType->Add(&BWAPI::BulletTypes::Arclite_Shock_Cannon_Hit, BroodWar::Api::Enum::BulletType::ArcliteShockCannonHit);
		BulletType->Add(&BWAPI::BulletTypes::EMP_Missile,              BroodWar::Api::Enum::BulletType::EmpMissile);
		BulletType->Add(&BWAPI::BulletTypes::Dual_Photon_Blasters_Hit, BroodWar::Api::Enum::BulletType::DualPhotonBlastersHit);
		BulletType->Add(&BWAPI::BulletTypes::Particle_Beam_Hit,        BroodWar::Api::Enum::BulletType::ParticleBeamHit);
		BulletType->Add(&BWAPI::BulletTypes::Anti_Matter_Missile,      BroodWar::Api::Enum::BulletType::AntiMatterMissile);
		BulletType->Add(&BWAPI::BulletTypes::Pulse_Cannon,             BroodWar::Api::Enum::BulletType::PulseCannon);
		BulletType->Add(&BWAPI::BulletTypes::Psionic_Shockwave_Hit,    BroodWar::Api::Enum::BulletType::PsionicShockwaveHit);
		BulletType->Add(&BWAPI::BulletTypes::Psionic_Storm,            BroodWar::Api::Enum::BulletType::PsionicStorm);
		BulletType->Add(&BWAPI::BulletTypes::Yamato_Gun,               BroodWar::Api::Enum::BulletType::YamatoGun);
		BulletType->Add(&BWAPI::BulletTypes::Phase_Disruptor,          BroodWar::Api::Enum::BulletType::PhaseDisruptor);
		BulletType->Add(&BWAPI::BulletTypes::STA_STS_Cannon_Overlay,   BroodWar::Api::Enum::BulletType::StaStsCannonOverlay);
		BulletType->Add(&BWAPI::BulletTypes::Sunken_Colony_Tentacle,   BroodWar::Api::Enum::BulletType::SunkenColonyTentacle);
		BulletType->Add(&BWAPI::BulletTypes::Acid_Spore,               BroodWar::Api::Enum::BulletType::AcidSpore);
		BulletType->Add(&BWAPI::BulletTypes::Glave_Wurm,               BroodWar::Api::Enum::BulletType::GlaveWurm);
		BulletType->Add(&BWAPI::BulletTypes::Seeker_Spores,            BroodWar::Api::Enum::BulletType::SeekerSpores);
		BulletType->Add(&BWAPI::BulletTypes::Queen_Spell_Carrier,      BroodWar::Api::Enum::BulletType::QueenSpellCarrier);
		BulletType->Add(&BWAPI::BulletTypes::Plague_Cloud,             BroodWar::Api::Enum::BulletType::PlagueCloud);
		BulletType->Add(&BWAPI::BulletTypes::Consume,                  BroodWar::Api::Enum::BulletType::Consume);
		BulletType->Add(&BWAPI::BulletTypes::Ensnare,                  BroodWar::Api::Enum::BulletType::Ensnare);
		BulletType->Add(&BWAPI::BulletTypes::Needle_Spine_Hit,         BroodWar::Api::Enum::BulletType::NeedleSpineHit);
		BulletType->Add(&BWAPI::BulletTypes::Invisible,                BroodWar::Api::Enum::BulletType::Invisible);
		BulletType->Add(&BWAPI::BulletTypes::Optical_Flare_Grenade,    BroodWar::Api::Enum::BulletType::OpticalFlareGrenade);
		BulletType->Add(&BWAPI::BulletTypes::Halo_Rockets,             BroodWar::Api::Enum::BulletType::HaloRockets);
		BulletType->Add(&BWAPI::BulletTypes::Subterranean_Spines,      BroodWar::Api::Enum::BulletType::SubterraneanSpines);
		BulletType->Add(&BWAPI::BulletTypes::Corrosive_Acid_Shot,      BroodWar::Api::Enum::BulletType::CorrosiveAcidShot);
		BulletType->Add(&BWAPI::BulletTypes::Neutron_Flare,            BroodWar::Api::Enum::BulletType::NeutronFlare);
		BulletType->Add(&BWAPI::BulletTypes::None,                     BroodWar::Api::Enum::BulletType::None);
		BulletType->Add(&BWAPI::BulletTypes::Unknown,                  BroodWar::Api::Enum::BulletType::Unknown);
		#pragma endregion
	}

	System::Drawing::Color EnumMapping::ToNativeColor(BWAPI::Color color)
	{
		return System::Drawing::Color::FromArgb(color.red(), color.green(), color.blue());
	}

	System::Drawing::Color EnumMapping::ToNativeColor(BWAPI::Color *color)
	{
		return System::Drawing::Color::FromArgb(color->red(), color->green(), color->blue());
	}

	BWAPI::Color* EnumMapping::ToBwColorPointer(System::Drawing::Color^ color)
	{
		return new BWAPI::Color(color->R, color->G, color->B);
	}

	BWAPI::Color EnumMapping::ToBwColor(System::Drawing::Color^ color)
	{
		BWAPI::Color clr(color->R, color->G, color->B);
		return clr;
	}
}